Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- MySQL
- 게임
- Nest.js
- flask
- game
- Sequelize
- nodejs
- 자료구조
- nestjs
- mongoose
- JavaScript
- Bull
- Queue
- Express
- typeORM
- MongoDB
- TypeScript
- 정렬
- OCR
- cookie
- GIT
- AWS
- Dinosaur
- Python
- class
- dfs
- react
- 공룡게임
- jest
Archives
- Today
- Total
포시코딩
2월28일 - entity cascade 옵션 추가하기 본문
728x90
개요
FK 종속 관계를 부여해놓은
Meetup, Join 라는 이름의 두 entity가 있는데
Meetup(모임)을 만들 때 Join(참가)에 작성자 id를 같이 넣는 로직이 있어
Meetup 데이터를 새로 만들 경우 만든 Meetup의 PK를 FK로 갖는 Join 데이터가 만들어지는 구조이다.
이번에 softDelete 없이 Meetup을 삭제하는 API를 만드는 과정에서 테스트 도중
위와 같은 에러가 발생했는데
entity를 세팅할 때 CASCADE 옵션을 주지 않았기 때문에
delete or update를 할 수 없다고 알려주고 있었다.
그래서 이번엔 예전에 해야되겠네 하고 잊었던 CASCADE 옵션을 추가해볼 것이다.
적용 방법
기존 코드
meetup.entity.ts
// ...생략
@Entity({ schema: 'chalkak', name: 'meetup' })
export class Meetup {
@PrimaryGeneratedColumn({ type: 'int', name: 'id' })
id: number;
// ...생략
@OneToMany(() => Join, (join) => join.meetup)
joins: Join[];
}
join.entity.ts
// ...생략
@Entity({ schema: 'chalkak', name: 'join' })
export class Join {
@PrimaryColumn()
meetupId: number;
// ...생략
@ManyToOne(() => Meetup, (meetup) => meetup.joins)
meetup: Meetup;
}
보다싶이 CASCADE 옵션이 없는 상태다. 이제 적용하면 다음과 같다.
CASCADE 적용 코드
meetup.entity.ts
// ...생략
@Entity({ schema: 'chalkak', name: 'meetup' })
export class Meetup {
@PrimaryGeneratedColumn({ type: 'int', name: 'id' })
id: number;
// ...생략
@OneToMany(() => Join, (join) => join.meetup, {
cascade: true, // 추가된 부분
})
joins: Join[];
}
join.entity.ts
// ...생략
@Entity({ schema: 'chalkak', name: 'join' })
export class Join {
@PrimaryColumn()
meetupId: number;
// ...생략
@ManyToOne(() => Meetup, (meetup) => meetup.joins, {
onDelete: 'CASCADE', // 추가된 부분
})
meetup: Meetup;
}
설정 뒤 meetup을 삭제하면 FK로 연결된 join 데이터도 삭제되는 것을 확인할 수 있다.
참고한 곳
728x90
'TIL' 카테고리의 다른 글
3월2일 - cookie에 있는 accessToken, refreshToken을 받지 못하는 문제(Insomnia) (0) | 2023.03.02 |
---|---|
3월1일 - git remote 다루기 (remote, upstream) (0) | 2023.03.02 |
2월27일 - Nest.js에서 jest로 테스트 코드 작성하기 (0) | 2023.02.27 |
2월25일 - ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1) (0) | 2023.02.26 |
2월24일 - @nestjs/throttler (0) | 2023.02.24 |