TypeORM 中的级联删除

使用数据库时,级联删除功能可确保删除父记录也会删除子记录。例如,我们有一个存储用户信息的表和另一个存储评论的表。当用户被删除时,属于他/她的所有评论也将消失。

在 TypeORM 中,我们可以通过将 {onDelete:’CASCADE’} 添加到 @ManyToOne装饰器来启用级联删除。

用户实体:

// KindaCode.com
// User entity
import {
  Entity, PrimaryGeneratedColumn, Column
} from 'typeorm';

@Entity()
export class User {
  @PrimaryGeneratedColumn()
  id: number;

  @Column()
  name: string;
}

评论实体:

// KindaCode.com Example
// Comment entity
import { Entity, Column, PrimaryGeneratedColumn, ManyToOne } from 'typeorm';
import { User } from './User.entity';

@Entity()
export class Comment {
  @PrimaryGeneratedColumn()
  id: number;

  @ManyToOne((type) => User, (user) => user.comments, { 
    onDelete: 'CASCADE' 
  })
  user: User;

  @Column()
  commentBody: string;
}

从现在开始,每当您删除用户时,所有相关评论也将被删除。