Node.js , MySQL, Sequelize, Express

 

참고자료

간단한 방법

post.findAll({
  // pagination
  offset: 10,
  limit: 5
});
  • offset : 내가 검색 결과를 가져오기 전에 넘어갈 게시물의 수
  • limit : 페이지당 보여줄 게시물의 수

 

offset 을 보고 싶은 페이지에 맞춰서 설정하기

  • query 파라메터 이용 -> page, limit 을 입력
  • limit 을 입력하지 않아도 값을 받을 수 있도록 default value 설정
  • page 값을 기준으로 offset 설정
    • page = 4, limit =5 --> offset = 5*(4 -1)  : 총 15개의 게시물을 거르고 16번째부터 5개 수집
  • findAndCountAll 을 이용하여 query parameter에 있는 page 가 존재하는지 확인
router.get('/', async (req, res, next) =>{
  try{
    const page = req.query.page;
    const limit =  Number(req.query.limit) || 5;
    const offset = limit * (page - 1)

    const {count, rows} = await Post.findAndCountAll({
      order: [['id', 'DESC'], ['createdAt', 'DESC']],
      limit,
      offset,
    })

    if (rows.length === 0){
      throw new HttpException(400, "없는 페이지 입니다.");
      return;
    }

    const posts = await Post.findAll({
      order:[['id', 'DESC'], ['createdAt', 'DESC']],
      limit,
      offset,
    })
    res.status(200).send(posts);

  }catch(err){
    next(err)
  }
})

 

 

Swagger 작성시 참고 - query 가 여러개면 - in: query 여러개 작성

/posts/?limit=number&page=number:
...
parameter
  - in: query

 

+ Recent posts