如何在typeOrm上建立关系

时间:2020-08-12 20:40:19

标签: nestjs typeorm

如何定义关系?

@Entity('favoritesable')
export class FavoritesEntity extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  favoritesableId: number; // foreing key ( ads id, blog id, user id )

  @Column()
  favoritesableType: string; // ads, blog, user

  @Column()
  userId: number;
}

广告实体:

@Entity('ads')
export class AdsEntity extends BaseEntity {
  @PrimaryGeneratedColumn()
  id: number;

  // How do I define a relationship to FavoritesEntity ?

}

可收藏表格的数据示例:

{id: 1, favoritesableId: 1, favoritesableType: "ads", userId: 1},
{id: 2, favoritesableId: 4, favoritesableType: "ads", userId: 1},
{id: 3, favoritesableId: 1, favoritesableType: "ads", userId: 2},

如何在广告实体和收藏夹实体上建立这种关系?

1 个答案:

答案 0 :(得分:0)

TypeORM's documentation非常清楚地表明了在实体之间建立关系的能力。

示例从他们的文档中提取:

import {Entity, PrimaryGeneratedColumn, Column, ManyToMany} from "typeorm";
import {Question} from "./Question";

@Entity()
export class Category {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    name: string;

    @ManyToMany(type => Question, question => question.categories)
    questions: Question[];

}
import {Entity, PrimaryGeneratedColumn, Column, ManyToMany, JoinTable} from "typeorm";
import {Category} from "./Category";

@Entity()
export class Question {

    @PrimaryGeneratedColumn()
    id: number;

    @Column()
    title: string;

    @Column()
    text: string;

    @ManyToMany(type => Category, category => category.questions)
    @JoinTable()
    categories: Category[];

}