nodeJS

[nestJS]페이지네이션 기능 구현하기

변기원 2023. 1. 19. 18:25

쿼리스트링 받아서 페이지네이션 처리하기

 

export class Page<T> {
  pageSize: number;
  totalCount: number;
  totalPage: number;
  items: T[];
  constructor(totalCount: number, pageSize: number, items: T[]) {
    this.pageSize = pageSize;
    this.totalCount = totalCount;
    this.totalPage = Math.ceil(totalCount / pageSize);
    this.items = items;
  }
}

유저에게 res로 보낼 Page 클래스 

db는 mongoDB, mongoose사용함. 

.count() 로 전체 개수 가져옴

프런트에서 처리하겠지만, 존재하는 페이지 넘는 요청을 하면 에러처리

.skip()은 위에서 몇 개 skip 할지

예를들어 .skip(8) 하면 sort 된 데이터에서 위에서 8개는 건너뜀

limit은 시작점부터 총 몇 개 가져올지

예를들어 .limit(10)하면 시작점부터 그다음 10개의 데이터만 가져옴

이것을 Page클래스로 만든 인스턴스 반환. 

인스턴스가 반환되어 프런트엔드에서 무한스크롤, 페이지네이션 데이터로 활용할 수 있음.