pagination 을 처리하는 방법으로는 2가지가 있다
- offset pagination
- skip, take 를 활용하여 데이터를 불러온다
- 페이지에 15개씩만 렌더링 된다는 가정하에 클라이언트에서 page: 1 라는 값을 던져주면 디비에 skip: 0(page - 1) take: 15 라는 값을 전달한다
- 게시판 형태에 적합하다
- 장점으로는 원하는 페이지에 한번에 갈 수 있다
- cursor based pagination
- cursor 는 unique 속성을 가져야 하며 보통 id(pk)을 활용
- 커서는 이전 데이터 목록의 제일 마지막 레코드를 가리키고 있어 처음에만 skip: 0을 주고 그 후로는 1을 전달
- 인피니티 스크롤을 구현할 때 유리하다
나는 기존에 1번 방법만 알고 있어 그동안 offset pagination 방법으로 인피니티 스크롤까지 처리를 해왔다..😭
참고
https://www.prisma.io/docs/concepts/components/prisma-client/pagination