Express.js의 Pagination

난나다·2023년 4월 10일
0

EliceSW4

목록 보기
7/7

Pagination은 간단하게 말하면 서버로부터 불러온 데이터를 원하는만큼만 클라이언트 측에 보여주는 방법입니다.\

url query

url query 를 사용해서 전달된 값을 가지고 구현합니다.

이때 url query

  • page : 현재 페이지

  • perPage : 페이지 당 게시글 수

이렇게 두 값을 전달받아 사용하고 url query를 통해 전달된 값은 문자열이기 때문에 Number 로 형변환하여 사용해야 합니다.

router.get('/post', (req, res) => {
	const page = Number(req.query.page || 1);
  	const perPage = Number(req.query.prePage || 10);
})

이때 req.query.page || 1 문장의 해석은 req.query.page 값을 가져와서 사용하는데 만약 해당하는 값이 없을 경우 1 을 사용한다는 의미입니다.

즉, 일치하는 값이 없을 때 기본값(default)을 1로 둔다고 이해하면 됩니다.

limit, skip

MongoDB에서는 limitskip 을 사용해 pagination을 구현합니다.

  • limit : 검색 결과 수 제한

  • skip : 검색 시 포함하지 않을 데이터 수

여기에 추가로 sort를 사용할 수 있습니다.

  • sort : 데이터 정렬
router.get('/post', async (req, res) => {
	const total = await Post.countDocument({}); // countDocument()는 모든 데이터의 수를 반환하는 MongoDB 함수이다.
  	const posts = await Post.find({})
    	.sort({ createdAt: -1 }) // 가장 최신 데이터부터
    	.skip(perPage * (page - 1))
    	.limit(perPage);
  	const totalPage = Math.ceil(total / perPage); // 항상 오름으로 해서 값을 반환해야 한다.
});

출처

이 글은 엘리스 SW 엔지니어 트랙을 기반으로 작성되었습니다.

0개의 댓글