【问题标题】:Retrive Data from MongoDB using NodeJS with Mongoose with paging使用 Node JS 和 Mongoose 和分页从 MongoDB 检索数据
【发布时间】:2019-09-15 16:49:43
【问题描述】:

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

我使用 MongooseSchema.find() 从数据库中获取数据。它工作正常。但问题是我要在 Angular 中显示数据列表。我当时不想要成千上万的数据。有什么方法可以在每个请求中检索 50 个数据并在另一个请求中检索另外 50 个数据?

例子:

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

【问题讨论】:

  • 你考虑过使用.limit()吗?
  • 我想随后显示所有数据。例如,如果滚动结束,首先我必须加载前 20 个数据,我们必须显示另一组 20 个数据。有什么办法吗?因为用户当时不想要所有数据。
  • 您使用的是什么 API 框架? Express、Hapi 等...?
  • 使用打字稿表达

标签: node.js mongodb express mongoose


【解决方案1】:

我建议使用 .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。

【讨论】:

  • 你能告诉我跳过的目的是什么吗? limit 将限制行数
  • 感谢 sunknudsen。如果可行,我会尝试您的方法,我接受答案。再次感谢您的帮助。你在摇摆。谢谢
  • 总是很开心
  • 嗨 sunknudsen 您的解决方案工作正常。谢谢我接受你的回答。继续摇摆
猜你喜欢
  • 1970-01-01
  • 2019-06-14
  • 2015-09-20
  • 2020-07-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-08-24
  • 2014-11-27
相关资源
最近更新 更多