在 NestJS 和 TypeORM 中,如何定义将关系列设置为 NULL 的关系,而不是尝试删除实体?

In NestJS and TypeORM, how do I define a relation that sets relation column to NULL instead of attempting to delete the entity?

提问人:Dave 提问时间:11/14/2023 更新时间:11/14/2023 访问量:22

问:

我正在使用 NestJS 10、PostGres 14 和 TypeORM 0.3.17。如果我定义了一个与用户实体有关系的订单实体......

@Entity()
export class Order {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @OneToOne((type) => User)
  @JoinColumn({ name: 'user_id', referencedColumnName: 'id' })
  user: User;

如何调整此关系,以便在删除用户时将user_id列设置为 NULL?目前,当我从这种关系中生成迁移时,它会这样生成

Foreign-key constraints:
    "FK_199e32a02ddc0f47cd93181d8fd" FOREIGN KEY (user_id) REFERENCES "user"(id)

因此,当我尝试删除具有关联订单的用户时,底层数据库将不允许我删除该用户。

nestjs 外键 typeorm on-delete

评论


答:

0赞 pakut2 11/14/2023 #1

您可以添加外键约束。参考

@Entity()
export class Order {
  @PrimaryGeneratedColumn('uuid')
  id: string;

  @OneToOne((type) => User, { onDelete: 'SET NULL' })
  @JoinColumn({ name: 'user_id', referencedColumnName: 'id' })
  user: User;