offset, limit 방식 page 처리

katanazero·2021년 5월 6일
0

etc

목록 보기
5/12
  • 회사 response 에 count = 총 게시글 수 만 넘어온다. 신입 친구가 잘 계산을 못하여, 정리하여 공유해주기 위해 작성
  • 언어는 Javascript 사용
  • 한 페이지당 보여주는 게시글 수는 10개 라고 가정(limit=10)

1. 총 페이지 수 구하기
Math.ceil(count / limit);
올림 처리를 해줘야 한다.
예) 10개씩 보여준다고 가정하고, 총 21개의 게시글이 존재하면 총 3 페이지가 만들어져야한다.
21/10 = 2.1 올림 -> 3

2. offset 수 구하기
1 page 라면 0 부터 시작을 할거고, limit 가 10이면 0~9 까지 조회를 해올거다.
2 page 라면?

const offset = (page-1) * limit;  // 2인 경우, 10 | 3인 경우, 20

offset, limit 는 보통 DB 에서 페이지네이션을 구현할 때 주로 사용합니다.

부록. no 구하기
idx 가 일정하다면 좋을텐데, 중간에 삭제된 row 가 발생을 하면
10 8 6 이런식으로 표시가 될겁니다. 이걸 어떻게 해결할까요?
저 같은 경우는 해당 페이지에서 시작되는 no 를 구해서 증감처리를 해버립니다.

  • 오름차순
let no = offset === 0 ? 1 : offset + 1;
const resultRows = [];

result.data.rows.forEach(row => {
  resultRows.push({
    ...row,
    no,
  });
  no += 1;
});
  • 내림차순
let no = offset === 0 ? count : count - offset;
const resultRows = [];

result.data.rows.forEach(row => {
  resultRows.push({
    ...row,
    no,
  });
  no -= 1;
});

만약, offset 을 받는게 아니라면 위 공식들은 변경이 되어야 할거다.

profile
developer life started : 2016.06.07 ~ 흔한 Front-end 개발자

0개의 댓글