과제 중에 데이터베이스 하나를 삭제하려면 연관되어있는 컬럼들을 찾아서 일일이 다 삭제해줬어야 했다.
예를 들어, 유저가 삭제되었을때 유저와 관련된 포인트, 예매내역들을 삭제 시켜줘야한다.
일일이 쿼리를 삭제하는 것이 아닌 typeorm에서 제공되는 cascade
를 활용해보자!
...
@Index('email', ['email'], { unique: true })
@Entity({
name: 'user',
})
export class User {
@PrimaryGeneratedColumn({ name: 'user_id' })
id: number;
...
// 유저와 결제는 1:N 관계
@OneToMany(() => Payment, (payment) => payment.user_id)
payments: Payment[];
...
...
@Entity({
name: 'payment',
})
export class Payment {
@PrimaryGeneratedColumn({ name: 'payment_id' })
id: number;
@ManyToOne(() => User, (user) => user.id)
user: User;
...
onDelete: 'CASCADE'
추가해주기...
@Entity({
name: 'payment',
})
export class Payment {
@PrimaryGeneratedColumn({ name: 'payment_id' })
id: number;
@ManyToOne(() => User, (user) => user.id, { onDelete: 'CASCADE' })
user: User;
...