javascript - NodeJS中mongo的limit和skip方法约定

标签 javascript node.js mongodb

我是 JS 新手,正在尝试构建 REST API。 我有一个数据库,其中包含文档,并且我实现了一种搜索方法,可以使用索引在每个字段中进行搜索。现在我想启用某种分页,所以我使用了 limit() 和skip()。 我的问题是:按照惯例,页面应该以 1 还是 0 开头?我的意思是如果我这样做:

let userArray = await User.find({$text: {$search:keyword}})
            .select(["-password", "-__v"])
            .limit(perPage)
            .skip(perPage*page)

如果我想要每页 3 个项目和第二页,网址应该是:

url?limit=3&page=1

url?limit=3&page=2

很抱歉,如果问题已经被提出并且很愚蠢,但我尝试编写尽可能干净的代码。

最佳答案

理想情况下,页面从 1 开始。将页面 0 作为起始页不会有太大区别,但其他选项更加传统和干净,如您所愿。

还要跳过和限制,您可以执行如下操作 -

跳过 = 每页 *(页 - 1)

限制=每页

例如每页是 3,

第 1 页:

skip = 3 * (1-1) = 0,跳过第 1 页的 0 项

第 2 页:

skip = 3 * (2-1) = 3,从第 2 页跳过 3 项,依此类推

关于javascript - NodeJS中mongo的limit和skip方法约定,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56734075/

相关文章:

mysql v mongodb - 以复杂用户为中心的网站的最佳解决方案?

arrays - 从 MongoDb 中的数组的数组中删除元素

javascript - HTML - 按钮仅在第二次单击后取消

javascript - 如何统计网站访问过程中的用户点击量,直到达到特定的点击次数?

javascript - 如何让 OR 运算符在此 JavaScript 数组中工作

node.js - 为什么我在 Redis 中需要超过 1 个连接,聊天应用程序需要多少内存?

javascript - Node.js 检查几个 redis 集中的值并同步返回

javascript - JavaScript 中的自定义 "confirm"对话框?

javascript - 当 Node 网站提供非 exe 文件时,如何在 Windows 中安装 Node v8?

node.js - Electron 应用程序利用GraphQL和MongoDB