TIL 02.08

Jay·2021년 2월 8일
0

레시피 사이트를 프로젝트 팀과 구현중이다.

pagination를 sequelize로 하니 매우 간단했다

const pageNum = req.query.page;
    let offset = 0;
    if (pageNum > 1) {
      offset = 20 * (pageNum - 1);
    }

쿼리 파라미터를 받아두었다가,
위와같이 offset을 정해주면 페이지별 20개씩 데이터를 클라이언트에 보내줄 수 있다.

req.query.page > 1 이상이라면 1페이지(데이터가 20개) 이상 존재한다는 뜻이고,

const allContent = await content.findAndCountAll({
        where: { categoryId: categoryValue.dataValues.id },
        attributes: [
          'id',
          'title',
          'thumbnail_url',
          'createdAt',
          'rate',
          'views',
        ],
        offset: offset,
        limit: 20,
      });

여기서
offset 만큼은 데이터를 find 하지 않겠다.
limit 최대 20개만 뽑겠다.

를 설정해주었다.

그리고, 클라이언트에도 총 페이지가 몇개인지 알려주는 것이 좋다.

그래야 필요한 만큼 페이지 버튼을 만들어 놓으니까...

 return res.status(200).send({
        data: {
          recipes: [searchResults.rows],
          allPages: allPages,
        },
      });

이런식으로 데이터를 내보낼 때, allPage에 담아서 클라이언트에서 페이지를 몇개 만들어야하는지 알려주었다.

profile
programming!

0개의 댓글