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

问题描述 投票:0回答:1

我正在使用 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 foreign-keys typeorm on-delete
1个回答
0
投票

您可以添加外键约束

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

  @OneToOne((type) => User, { onDelete: 'SET NULL' })
  @JoinColumn({ name: 'user_id', referencedColumnName: 'id' })
  user: User;
© www.soinside.com 2019 - 2024. All rights reserved.