在我的nodejs
網絡應用上使用sequelize
,我想查詢使用分頁(按日期)的帖子。他們提供offset
和limit
。Sequelize分頁
由於我想顯示帖子從新到舊,我需要考慮它們的創建日期。例如,如果我將第一個查詢限制爲10頁,並且在執行第二個查詢之前創建了一個新帖子,則偏移量爲10的下一個查詢將導致來自最後一個查詢的重複帖子。
我應該如何實現分頁,以便它支持新條目?
在我的nodejs
網絡應用上使用sequelize
,我想查詢使用分頁(按日期)的帖子。他們提供offset
和limit
。Sequelize分頁
由於我想顯示帖子從新到舊,我需要考慮它們的創建日期。例如,如果我將第一個查詢限制爲10頁,並且在執行第二個查詢之前創建了一個新帖子,則偏移量爲10的下一個查詢將導致來自最後一個查詢的重複帖子。
我應該如何實現分頁,以便它支持新條目?
如果你想有一個穩定的分頁,不要分頁行偏移,因爲它是不穩定的,因爲你提到的原因。
您應該瞄準對隨時間穩定的值進行分頁,並使用where子句來過濾結果。最好的情況是如果你有一個自動遞增的id,但是發佈日期也是合理的。
喜歡的東西:
Post.findAll({
where: { createdDate: { $lt: previousDate },
limit: 10
})
你需要跟蹤previousDate的這個OFC。這種方法也有一些注意事項,您可能需要將其與客戶端重複數據刪除結合起來。
這裏是一個博客貼子,可能有你需要的所有答案: Pagination: You're (Probably) Doing It Wrong
要做到這一點,最簡單的方法是使用Sequelize的findAndCountAll
Post.findAndCountAll({
where: {...},
order: [...],
limit: 5,
offset: 0,
}).then(function (result) {
res.render(...);
});
這裏,結果有兩種結果您的查詢並計爲result.row
和result.count
。然後,您可以增加偏移量並將其用於分頁。