РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
⊗jsnsPmRnOM 160 of 168 menu
◀ ▶

Связь один ко многим в Nest

Пусть у каждой статьи один автор, а у человека может быть много статей. В базе это одна колонка с числом на стороне материала, а в коде удобнее видеть соседа объектом, а не голым ключом.

Связь «один ко многим» на стороне «многих» задают полем с пометкой ManyToOne: тип поля - класс «одного», а TypeORM сам создаст колонку с идентификатором. Обратный массив на «одном» здесь не нужен: достаточно ссылки из материала к автору.

Покажем на примере постов:

import { Column, Entity, PrimaryGeneratedColumn } from 'typeorm'; @Entity() export class Author { @PrimaryGeneratedColumn() id: number; @Column() name: string; }

У материала добавим поле соседа и укажем класс автора:

import { Column, Entity, ManyToOne, PrimaryGeneratedColumn } from 'typeorm'; import { Author } from './author.entity.js'; @Entity() export class Post { @PrimaryGeneratedColumn() id: number; @Column() title: string; @ManyToOne(() => Author) author: Author; }

Обе сущности регистрируем в модуле темы:

import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { Author } from '../author.entity.js'; import { Post } from '../post.entity.js'; @Module({ imports: [TypeOrmModule.forFeature([Post, Author])], }) export class PostsModule {}

Корень подключает базу с созданием таблиц при старте и импорт модуля постов:

import { Module } from '@nestjs/common'; import { TypeOrmModule } from '@nestjs/typeorm'; import { PostsModule } from './posts/posts.module.js'; @Module({ imports: [ TypeOrmModule.forRoot({ type: 'postgres', host: 'localhost', port: 5432, username: 'postgres', password: 'postgres', database: 'site', autoLoadEntities: true, synchronize: true, }), PostsModule, ], }) export class AppModule {}

Опишите связь «один ко многим» от Worker к Department на стороне работника, зарегистрируйте обе сущности в WorkersModule и подключите модуль к корню с созданием таблиц при старте.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить