首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用mongoose从mongoDB中获取一定数量的对象?(Node.js)

如何使用mongoose从mongoDB中获取一定数量的对象?(Node.js)
EN

Stack Overflow用户
提问于 2019-07-31 11:33:36
回答 3查看 136关注 0票数 2

我有一个MongoDB数据库和一个React网页,它使用http请求向我的Node.js服务器显示内容。此Node.js使用mongoose与DB通信。react网页每页最多显示10个条目,当数据库变大时速度会很慢:

React web page

Node.js正在做什么:

代码语言:javascript
复制
router.get("/", async (req, res) => {
    const movies = await Movie.find()
        .select("-__v")
        .sort("name");
    res.send(movies);
});

如您所见,Node.js返回所有数据库,前端React仅显示这10个条目,具体取决于用户正在查看的页面。

根据用户正在查看的页面,最好只从数据库中获取10个条目。

我该怎么做呢?

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2019-07-31 11:42:30

您可以使用skip()limit()来完成此操作。

示例:

代码语言:javascript
复制
const movies = await Movie.find()
    .select("-__v")
    .skip(perPage * currentPage)
    .limit(perPage)
    .sort("name");

或者你可以使用像mongoose-paginate这样的分页包...

票数 2
EN

Stack Overflow用户

发布于 2019-07-31 11:43:55

是的,有跳过和限制方法可以从数据库中获取一定数量的数据。

代码语言:javascript
复制
router.get("/", async (req, res) => {
    const movies = await Movie.find()
    .select("-__v").skip(10).limit(10)  // use skip and limit value as you want. 
    .sort("name");
    res.send(movies);
});
票数 0
EN

Stack Overflow用户

发布于 2019-07-31 11:44:11

您可以使用.limit(n)限制返回对象的数量。

代码语言:javascript
复制
router.get("/", async (req, res) => {
    const movies = await Movie.find()
        .select("-__v")
        .sort("name")
        .limit(10);
    res.send(movies);
});

已经有一个关于这个问题的帖子了。请参阅此question

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57282783

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档