Nest js - определить отношение OneToMany в сущности - PullRequest
0 голосов
/ 09 июля 2020

Я определяю поля сущности в своем проекте Nest JS. У меня есть реализация ManyToOne, которая успешно определена. Мне трудно найти правильный способ определения отношения OneToMany, чтобы он соответствовал синтаксису, который я использовал для другого отношения.

import {Entity,Column, PrimaryColumn, ManyToOne,JoinColumn,OneToMany} from "typeorm";
import { Account } from "./account.entity";
import { Balance } from "./balance.entity";
import { BaseEntity } from "./base.entity";

@Entity()
export class MainEntity extends BaseEntity {
  @PrimaryColumn({
    type: "varchar",
    name: "id",
    unique: true
  })
  id: string;

  @ManyToOne(() => Account, { nullable: true })
  @JoinColumn({
    name: "account_id",
    referencedColumnName: "id"
  })
  account: Account;

@ OneToMay необходимо связать с сущностью Balance и сопоставить в нем поле mappedBy paymentDevice.

Моя попытка:

@OneToMany(() => Balance, ...)
balances: Balance[]

Я использую Nest Js и пишу на машинке, поэтому это сложно для меня.

1 Ответ

0 голосов
/ 14 июля 2020

Как правило, отношения TypeORM, используемые в Nest JS, просты и удобны для разработчиков. Написанный вами код определяет параметры, которые уже предопределены. Например,

@PrimaryColumn({
    type: "varchar",
    name: "id",
    unique: true
  })

Эти точные параметры определены как

@PrimaryColumn() // unique: true
id: string //varchar, name: id

. Таким образом, вы можете получить код, как показано ниже. Для объекта учетной записи

@Entity()
export class Account {

    @PrimaryColumn()
    id: string;


    @ManyToOne(type => Balance, balance => balance.id)
    balance: Balance;

}

Для объекта баланса

@Entity()
export class Balance {

   @PrimaryColumn()
   id: string;


   @OneToMany(type => Account, account => account.id)
   @JoinColumn({name: "account_id"})   
   // defining this is also optional because by default,
   // the referenced foreign key is named as <column_name>_id or account_id

   account: Account;

}

Это создаст отношение «многие к одному» для объекта Account и OneToMany на балансе. Для получения дополнительных примеров см .: https://orkhan.gitbook.io/typeorm/docs/many-to-one-one-to-many-relations

...