续集分页
在我的nodejs
web应用程序上使用sequelize
,我想查询使用分页(按date)的post。 阅读sequelize
文档 ,他们提供使用offset
和limit
。
由于我想显示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.row
和result.count
。 然后,您可以增加偏移量,并将其用于分页。
将findAndCountAll的文档findAndCountAll