Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/38.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用mongoose从mongoDB获取一定数量的对象?(Node.js)_Javascript_Node.js_Mongodb_Mongoose - Fatal编程技术网

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

Javascript 如何使用mongoose从mongoDB获取一定数量的对象?(Node.js),javascript,node.js,mongodb,mongoose,Javascript,Node.js,Mongodb,Mongoose,我有一个MongoDB数据库和一个React网页,该网页使用对Node.js服务器的http请求显示内容。此Node.js使用mongoose与数据库通信。react网页每页最多显示10个条目,当数据库变大时,它会变慢: Node.js正在做什么: router.get("/", async (req, res) => { const movies = await Movie.find() .select("-__v") .sort("name")

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

Node.js正在做什么:

router.get("/", async (req, res) => {
    const movies = await Movie.find()
        .select("-__v")
        .sort("name");
    res.send(movies);
});
如您所见,Node.js返回所有数据库,前端React仅显示10个条目,具体取决于用户正在查看的页面

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

我该怎么做

谢谢

您可以使用
skip()
limit()
来执行此操作

例如:

const movies = await Movie.find()
    .select("-__v")
    .skip(perPage * currentPage)
    .limit(perPage)
    .sort("name");

或者您可以使用分页软件包,如
mongoosepaginate
..

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

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);
});

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

已经有一个帖子提出了这个问题。参考这个

router.get("/", async (req, res) => {
    const movies = await Movie.find()
        .select("-__v")
        .sort("name")
        .limit(10);
    res.send(movies);
});