common.service.ts-composeFindOptions
private composeFindOptions<T extends BaseModel>(
dto: BasePaginationDto,
): FindManyOptions<T> {
/**
* where, order, take, skip 반환
* skip-> page based pagination에서만
*/
/**
* DTO의 현재 생긴 구조는 아래와 같다.
*
* {
* where__id__more_than: 1,
* order__createdAt: 'ASC,
* }
*
* 현재는 where__id__more_than / where__id__less_than에 해당하는 where 필터만 사용중이지만
* 나중에 추가적인 where 필터를 넣고싶어졌을 때 모든 where 필터를 자동으로 파싱할 수 있을만한 기능이
* 필요하다..
*
* 1) where로 시작한다면 필터 로직을 적용
* 2) order로 시작한다면 정렬 로직을 정용한다.
* 3) 필터 로직을 적용한다면 '__' 기준으로 split 했을 때 3개의 값으로 나뉘는지 2개인지 확인한다.
* 3-1) 3개의 값으로 나뉜다면 FILTER_MAPPER에서 해당되는 operator 함수를 찾아서 적용한다.
* ex) ['where', 'id', 'more_than'] -> more_than을 실제 typeorm-operator로 적용
* 3-2) 2개의 값으로 나뉜다면 정확한 값을 필터하는 것이기 때문에 operator 없이 적용한다.
* ex) ['order', 'createdAt'] -> operator 필요 X
* 4) order의 경우 3-2와 같이 적용한다.
*/
let where: FindOptionsWhere<T> = {};
let order: FindOptionsOrder<T> = {};
for (const [key, value] of Object.entries(dto)) {
if (key.startsWith('where__')) {
where = {
...where,
...this.parseWhereFilter(key, value),
};
} else if (key.startsWith('order__')) {
order = {
...order,
...this.parseWhereFilter(key, value),
};
}
}
return {
where,
order,
take: dto.take,
skip: dto.page ? dto.take * (dto.page - 1) : null,
};
}여기서 함수가 실행되면 where, order은 빈 객체로 초기화 되는데 왜 for 문 안에선 ...where, ...order을 해주는건가요?
답변 1
0
안녕하세요!
좋은 practise라고 생각하시면 될 것 같습니다.
지금은 빈 객체지만 나중에 그렇지 않을수도 있고 어쨋든 목적은 where와 order를 모두 그대로 옮겨주는 것이기 때문에 그렇습니다.
감사합니다!
cascade 질문
0
38
1
@types/bcrypt 설치과정이 누락된것같습니다.
0
45
1
process.env port key 에러
0
45
1
추상화
0
48
1
[공유] DTO optional 필드가 undefined로 잡혀 TypeORM 조건이 깨지는 현상
0
93
2
where 키워드가 들어가는 메서드와 아닌 메서드
0
56
1
BearerTokenGuard에서 db를 조회해서 유저 정보를 불러오는 이유?
0
69
1
app.controller app.service 는 지워도되나요?
0
69
1
@JoinColumn을 쓰는 경우와 안쓰는 경우의 차이
0
78
1
포트 3000에서 listen하는 곳까지 넘어가지 않습니다.
0
64
1
PickType 사용 시 `as const`를 꼭 사용해야 하나요?
0
102
2
socket connect 오류
0
96
2
강의를 들으면서 궁금한 점
0
97
2
DELETE 요청의 반환값은 어떤 기준으로 결정하는 게 좋을까요?
0
59
2
커리큘럼 질문
0
98
2
put 요청은 언제
0
90
3
typeorm VS prisma
0
343
2
142 강의 > 4:00 > 포스트멘 활용 관련 질문 드립니다.
0
76
2
User 데코레이터 버그 수정 전달드립니다.
0
67
1
git 주소 부탁드립니다.
0
112
2
nest g resource 명령어 에러
0
99
2
로그인 엔드포인트 관련 질문
0
84
2
yarn으로 express 다운 후 node 2_server.js 실행 안되는 경우
0
146
3
"흔히 사용되는 메서드" 강의 관련 질문입니다~
0
95
2





