如何在nodejs + postgresql中实现分页
Posted
技术标签:
【中文标题】如何在nodejs + postgresql中实现分页【英文标题】:How to implement pagination in nodejs + postgresql 【发布时间】:2018-06-26 04:23:58 【问题描述】:我是 Node.js 的新手。我想在 Node.js 中使用 express 作为框架和 Postgresql 作为数据库在我的 Api 编写中实现分页。我想以分页的形式获取数据。
提前致谢。
【问题讨论】:
如果以下答案解决了您的问题 - 请标记为正确 【参考方案1】:您可以使用LIMIT and OFFSET 从数据库中获取数据块。您需要 2 个变量来进行分页,page 和 itemsPerPage。您可以从路由本身获取页面变量,例如 /api/items/:page,对于 itemsPerPage,您可以将其设为默认 20 个项目,但允许客户端通过查询指定它?items= 50 或请求正文或标头或任何您想要的。然后,当您拥有这两个变量时,您可以对数据库执行查询,例如:
选择 * 从项目 限制 itemsPerPage 偏移量 (page - 1) * itemsPerPageLIMIT 表示检索 X 个项目,OFFSET 表示跳过 Y 个项目。它们两者的组合将是:“跳过 Y 项并给我下一个 X 项”。 Page - 1 表示如果您在第一页,我们不想跳过任何项目,而是检索前 X 个项目。这在页码 >= 1 时有效。
【讨论】:
我很高兴它做到了@ajaysaini。请把我的答案标记为正确的:)【参考方案2】:您可以在用于分页排序的列上使用索引。您可以在列值(唯一值)上使用 where 条件来提高效率,而不是限制和偏移量。我已经创建了一个关于这个https://medium.com/@shikhar01.cse14/pagination-with-postgresql-18e0b89e0b1c的帖子
【讨论】:
以上是关于如何在nodejs + postgresql中实现分页的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Postgresql 中实现对复杂嵌套 JSONB 的全文搜索
如何使用 nodejs 和 express 在 REST API 中实现搜索和过滤