在我的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
。然后,您可以增加偏移量并将其用于分页。