dew*_*wey 1 postgresql foreign-keys typeorm nestjs
我想将 a 引用module到 a queue。所以一个人queue可以有多个modules. 因此,我只是想存储id的module在queue。
根据 Typeorm 的文档,我应该以这种方式实现这种关系:
@ManyToOne(type => Module)
@JoinColumn({ name: "currentModuleId" })
module: Module;
Run Code Online (Sandbox Code Playgroud)
我只是想提供id的module,而不是一个模块对象。所以我想出了这个解决方案:
@Entity()
export class Module extends BaseEntity {
@PrimaryColumn({ unique: true })
public id: string;
}
Run Code Online (Sandbox Code Playgroud)
@Entity()
export class Queue extends BaseEntity {
@PrimaryGeneratedColumn('uuid')
public id: string;
@OneToOne(() => Module)
@JoinColumn({ name: 'currentModuleId' })
currentModuleId: string;
}
Run Code Online (Sandbox Code Playgroud)
这有效,但我不太相信这是一个防错解决方案。我应该如何为 实现外键queue?
另外:Typeorm 如何知道currentModuleId应该引用哪一列?
多对一/一对多关系应该可以解决您的问题,
这是一种关系,其中A包含B 的多个实例,但B仅包含A 的一个实例。在您的情况下,A 指的是队列实体,B 指的是模块实体
模块实体
@Entity()
export class Module extends BaseEntity {
@PrimaryColumn({ unique: true })
public id: string;
@ManyToOne(() => Queue, (Queue) =>
Queue.id, { onUpdate: 'CASCADE', onDelete: 'CASCADE' })
@JoinColumn({ name: 'ueues' })
queues: Queue;
}
Run Code Online (Sandbox Code Playgroud)
队列实体
@Entity()
export class Queue extends BaseEntity {
@PrimaryGeneratedColumn('uuid')
public id: string;
@OneToMany(() => Module, Module =>
Module.queues, { onUpdate: 'CASCADE', onDelete: 'CASCADE' })
modules: Module[];
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3580 次 |
| 最近记录: |