如何在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) * itemsPerPage

LIMIT 表示检索 X 个项目,OFFSET 表示跳过 Y 个项目。它们两者的组合将是:“跳过 Y 项并给我下一个 X 项”。 Page - 1 表示如果您在第一页,我们不想跳过任何项目,而是检索前 X 个项目。这在页码 >= 1 时有效。

【讨论】:

我很高兴它做到了@ajaysaini。请把我的答案标记为正确的:)【参考方案2】:

您可以在用于分页排序的列上使用索引。您可以在列值(唯一值)上使用 where 条件来提高效率,而不是限制和偏移量。我已经创建了一个关于这个https://medium.com/@shikhar01.cse14/pagination-with-postgresql-18e0b89e0b1c的帖子

【讨论】:

以上是关于如何在nodejs + postgresql中实现分页的主要内容,如果未能解决你的问题,请参考以下文章

如何在 PostgreSQL 中实现多对多关系?

如何在 Postgresql 中实现对复杂嵌套 JSONB 的全文搜索

如何在 NodeJS 中实现带有子域的 csrf

如何使用 nodejs 和 express 在 REST API 中实现搜索和过滤

线程池是如何工作的,以及如何在 NodeJS 之类的 async/await 环境中实现它?

如何在 javascript/HTML5/NodeJS 中实现客户端-服务器-客户端基础架构的想法