2016-07-05 68 views
1

在我的nodejs網絡應用上使用sequelize,我想查詢使用分頁(按日期)的帖子。他們提供offsetlimitSequelize分頁

由於我想顯示帖子從新到舊,我需要考慮它們的創建日期。例如,如果我將第一個查詢限制爲10頁,並且在執行第二個查詢之前創建了一個新帖子,則偏移量爲10的下一個查詢將導致來自最後一個查詢的重複帖子。

我應該如何實現分頁,以便它支持新條目?

回答

6

如果你想有一個穩定的分頁,不要分頁行偏移,因爲它是不穩定的,因爲你提到的原因。

您應該瞄準對隨時間穩定的值進行分頁,並使用where子句來過濾結果。最好的情況是如果你有一個自動遞增的id,但是發佈日期也是合理的。

喜歡的東西:

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

你需要跟蹤previousDate的這個OFC。這種方法也有一些注意事項,您可能需要將其與客戶端重複數據刪除結合起來。

這裏是一個博客貼子,可能有你需要的所有答案: 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