본문 바로가기

A.개발관련자료

[0]nestjs 페이징 ( take, skip 사용)

 //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

 

Select using Query Builder - typeorm

Adding DISTINCT ON expression (Postgres only)

orkhan.gitbook.io

https://orkhan.gitbook.io/typeorm/docs/select-query-builder