2016-07-05 3 views
1

웹 응용 프로그램 nodejssequelize을 사용하여 페이지 매김 (날짜 별)을 사용하여 게시물을 쿼리하고 싶습니다. sequelize docs을 읽으면서 그들은 offsetlimit을 사용합니다.페이지 매김 다시 설정

새 게시물부터 이전 게시물까지 표시하고 싶기 때문에 작성한 날짜를 고려해야합니다. 예를 들어 첫 번째 쿼리를 10 페이지로 제한하고 두 번째 쿼리를 실행하기 전에 새 게시물이 만들어지면 오프셋이 10 인 다음 쿼리는 마지막 쿼리의 중복 된 게시물이됩니다.

새 항목을 지원하도록 페이지 매김을 어떻게 구현해야합니까?

답변

6

안정적인 페이지 매김을 원할 경우 행 오프셋에 페이지 매김을하지 마십시오.

시간이 지남에 따라 안정적인 값에 페이지 매김을하고 결과를 필터링하기 위해 where 절을 사용해야합니다. 가장 좋은 경우는 자동 증가 ID가 있지만 게시일도 합리적 일 수 있습니다. 같은

뭔가 :

Post.findAll({ 
where: { createdDate: { $lt: previousDate }, 
limit: 10 
}) 

는이 OFC에 대한 previousDate을 추적 할 필요가있다. 이 접근법에는 몇 가지주의 사항이 있으며 클라이언트 측 중복 제거 기능과 함께 사용해야 할 수도 있습니다. 여기

은 아마 당신이 필요로하는 모든 답변이 블로그 게시물입니다 : Pagination: You're (Probably) Doing It Wrong

3

이 작업을 수행하는 가장 쉬운 방법은 사용하는 것입니다 Sequelize의 findAndCountAll

Post.findAndCountAll({ 
    where: {...}, 
    order: [...], 
    limit: 5, 
    offset: 0, 
}).then(function (result) { 
    res.render(...); 
}); 
여기

, 결과는 결과 모두 가지고 귀하의 질의 및 카운트는 result.rowresult.count입니다. 그런 다음 오프셋을 증가시키고 이것을 페이지 매김에 사용할 수 있습니다.

Sequelize documentation for findAndCountAll