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 을 받는게 아니라면 위 공식들은 변경이 되어야 할거다.