TypeORM Pagination - Repository.find()
createQueryBuilder가 아닌 find() 함수를 사용할 때 Pagination
userRepository.find({
skip: 0, //
take: 10
})
- skip : Is the offset or first page to start from. This is 0 indexed.
시작 인덱스 지정 (0부터 시작) - take : Is the number of items to have per page.
페이지 당 갯수 지정
products.controller.ts
@Get()
getAll(@Query() query): Promise<ProductsOutput> {
return this.productService.getAll(query.page, query.pageSize);
}
@Query()
데코레이터를 이용해 Get request의 매개변수를 받은 후 Service로 전달
(이는 Get만 사용 가능하므로 추후에 다른 타입 알아볼 것)
products.service.ts
async getAll(page, pageSize): Promise<ProductsOutput> {
try {
console.log(page);
console.log(pageSize);
// throw new error();
return {
ok: true,
data: await this.products.find({
relations: ['category'],
skip: (page - 1) * pageSize,
take: pageSize,
}),
};
} catch (e) {
return {
ok: false,
error: e,
};
}
}
skip : (page-1) * pageSize
take : pageSize
http://localhost:3000/product?page=1&pageSize=10
요청 시,
product
의 index 0번부터 10번까지 조회
참고 출처 :
https://m.blog.naver.com/sssang97/221940724682
https://blog.8bitzen.com/posts/28-06-2019-typeorm-pagination
https://typeorm.io/#/select-query-builder/using-pagination
Author And Source
이 문제에 관하여(TypeORM Pagination - Repository.find()), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@youn0097/TypeORM-Pagination-Repository.find저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)