续集分页

在我的nodejs web应用程序上使用sequelize ,我想查询使用分页(按date)的post。 阅读sequelize文档 ,他们提供使用offsetlimit

由于我想显示post从新到旧,我需要考虑它们创build的date。 例如,如果我将第一个查询限制为10页,并且在执行第二个查询之前创build了一个新的post,则偏移量为10的下一个查询将导致来自最后一个查询的重复post。

我应该如何实现分页,以便支持新条目?

如果你想有一个稳定的分页,不要分页行偏移,因为它是不稳定的,因为你提到的原因。

您应该针对一段时间内稳定的值进行分页,并使用where子句来过滤结果。 最好的情况是,如果你有一个自动递增的id,但是发布date也是合理的。

就像是:

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

你需要跟踪这个ofc的previousDate。 这种方法也有一些注意事项,您可能需要将其与客户端重复数据删除相结合。

这里是一个博客文章,可能有你需要的所有答案: 分页:你(可能)做错了

最简单的方法是使用Sequelize的findAndCountAll

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

在这里,结果既包含查询的结果,又包含result.rowresult.count 。 然后,您可以增加偏移量,并将其用于分页。

将findAndCountAll的文档findAndCountAll