Node.js , MySQL, Sequelize, Express
참고자료
- https://sequelize.org/v3/docs/querying/#pagination-limiting
- https://sequelize.org/docs/v6/core-concepts/model-querying-finders/#findandcountall
간단한 방법
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
'미니프로젝트 > 지하철역 보관함대여 앱' 카테고리의 다른 글
[미니프로젝트][1][issue 9] 각 locker 의 현재 상태 표현 (0) | 2023.12.28 |
---|---|
[미니프로젝트][1] [issue 7] weather api 추가 (0) | 2023.12.28 |
[미니 프로젝트] [1][issue 1] jwt token 이용하여 유저의 로그인 여부 확인 (0) | 2023.12.25 |
[미니프로젝트] [1] 구현할 기능 목록 (0) | 2023.12.25 |
미니프로젝트 [문제점] : post 와 해당 comment 지우기 (0) | 2023.10.17 |