//1.초기: javascript slice 사용하여 페이징 => 매번 totalQList를 불러와야함
if (req.category === '작성자') {
let totalQList = !(
req.userId === '' ||
req.userId === null ||
req.userId === undefined
)
? await this.customenrCenterQ.find({
userId: req.userId,
})
: await this.customenrCenterQ.find();
result.QList = totalQList;
// let totalPageCount = Math.ceil(totalQList.length / slicePage);
// result.totalPage = totalPageCount;
// result.totalSearchCount = totalQList.length;
// result.QList = totalQList.slice(
// (clickPage - 1) * slicePage,
// clickPage * slicePage,
// );
}
//2.typeorm의 find에 where, take, skip 으로 검색 기능 완성 가능
//=> CustomerCenterQ 에서 req.userId 값으로 들어오는 검색어를 찾고, take로 페이징 단위 설정, skip으로 페이지 시작점부터 끝지점 설정
//findAndCount로 searching한 리스트와 갯수한꺼번에 불러오기
if (req.category === '작성자') {
let [searchQlist, searchQlistCount] = await getRepository(
CustomerCenterQ,
).findAndCount({
where: {
userId: Like('%' + req.userId + '%'),
},
order: {
createdAt: 'DESC',
},
take: slicePage,
skip: (clickPage - 1) * slicePage,
});
result.QList = searchQlist;
result.totalSearchCount = searchQlistCount;
}
typeorm의 take과 skip은 limit과 offset과 비슷하게 사용되며 페이징할때 더 효율적이다. (queryBuilder로 take,skip 설정하는 방법과 typeorm의 find로 take,skip 설정하는 방법 유사함)
참고: https://orkhan.gitbook.io/typeorm/docs/select-query-builder
'A.개발관련자료' 카테고리의 다른 글
[0]NESTJS typeorm date 타입 날짜 between으로 데이터 찾기 (0) | 2022.07.21 |
---|---|
[0]nestjs typeorm OR, AND (0) | 2022.07.18 |
[0]increment decrement button (0) | 2022.06.28 |
[0]redux toolkit의 slice내에서 navigate쓸수 없을 때 (비동기) (0) | 2022.06.24 |
[0]react 스크롤시 해당 위치(id)로 이동하기 : <a href = "#tagname"> ,scrollEvent (0) | 2022.06.21 |