반응형
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
- typescript
- Algorithm
- TCP
- type challenge
- dp
- Crawling
- 타입스크립트
- ip
- dfs
- 알고리즘
- 가천대
- 레벨 1
- 프로그래머스
- HTTP 완벽 가이드
- 백준
- 문자열
- HTTP
- 크롤링
- 프로그래머스 레벨 2
- Nestjs
- Node.js
- 타입 챌린지
- 쉬운 문제
- 수학
- 소켓
- 자바스크립트
- BFS
- 그래프
- socket
- javascript
Archives
- Today
- Total
kakasoo
쿼리빌더 최대한 없애기 / deletedAt을 잘 이용하기 본문
반응형
이미 QueryBuilder로 짜여진 부분은 남겨둬도 된다고 생각했지만, 오늘 다시 생각해보니 고치는 게 이득이다.
QueryBuilder로 짜여진 것도, 결국 ON절을 WHERE 절로 고치면 해결할 수 있다.
조금 코드의 형태가 달라지긴 하겠지만, 해결할 수 없는 것은 아니다.
// NOTE : 코드 1번
const departments = await this.departmentRepository
.createQueryBuilder('department')
.leftJoinAndSelect(
'department.userList',
'user',
'user.accountStatus = :available OR user.accountStatus = :rest',
{
available: UserStatus.Available,
rest: UserStatus.Rest,
},
)
.whereInIds(departmentIds)
.andWhere('department.status = :status', { status: Status.ACTIVATE })
.getMany();
다만 이런 형태처럼 user가 존재하지 않는 부서들도 부서는 부서이므로 가져오게끔 하는 코드가 있다고 할 때,
이런 코드는 Repository 형태로 고치는 것이 불가능하다.
where 절로 넣어버릴 경우, user가 없는 부서들이 모두 걸러지기 때문이다.
저런 문제를 해결하고 싶다면, deletedAt을 잘 이용해서, join 조건에서 알아서 걸려지게 만들어보자.
반응형
'프로그래밍 > TypeORM' 카테고리의 다른 글
4. WHERE과 subQuery, COUNT를 조건으로 걸기 (0) | 2023.01.10 |
---|---|
3. Repository find 메서드 완벽 정리 (0) | 2023.01.07 |
[TypeORM] 2. ManyToMany, 다대다 관계의 표현 (0) | 2023.01.04 |
[TypeORM] 1. Column과 Entity, 일대 다 관계의 표현 (0) | 2023.01.02 |