node.js - 使用 Node JS 和 Mongoose 进行分页从 MongoDB 检索数据

标签 node.js mongodb express mongoose

我在 mongoDB 中存储了数十万条数据。我正在使用 NodeJS Rest api 和 mongoose 来检索数据。

我使用 MongooseSchema.find() 从数据库获取数据。它工作正常。但问题是我要在 Angular 中显示数据列表。我当时不需要几十万条数据。有没有办法在每个请求中检索 50 个数据,在另一个请求中检索另外 50 个数据?

示例:

如果向下滚动结束,我们必须调用 api 来获取另一组 20 条数据来显示,如何显示前 20 条数据?

最佳答案

我建议使用.limit().skip()并向您的 API 端点添加分页。

Limit 限制返回的文档数量,而skip 则跳过给定数量的文档。通常,它与 .sort() 一起使用,以给定顺序返回文档,例如它们的创建日期时间。

Model.find(...).sort(...).limit(req.query.limit).skip(req.query.skip).exec(function(error, docs) {});

分页示例:

您的应用发送请求(例如 GET/api/users?limit=20&skip=0)以获取前 20 个。

然后它发送一个请求,例如 GET/api/users?limit=20&skip=20 以获取下一个 20。

关于node.js - 使用 Node JS 和 Mongoose 进行分页从 MongoDB 检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57939132/

相关文章:

javascript - 在 REST 调用中访问数组

ruby-on-rails - Rails 模型单一化无法正常工作

Mongodb 4 : Failed to start mongod. 服务 : Unit mongod. 服务未找到

linux - Intel Galileo - 启动时运行命令

node.js - 通过 NPM 安装使用 Zurb 的 Foundation

node.js - 为什么需要使用 express static

node.js - CLUI - Nodejs 控制台中的精美进度条 - 有没有一种简单的方法来更新它?

node.js - Node.js 中的 eBay API 调用返回 'Input transfer has been terminated because your request timed out'

node.js - Azure - 每个 Web 应用程序进行多个部署?

php - MongoDB和PHP可以添加同名字段吗?