gpt4 book ai didi

node.js - 如何将 mongodb 查询拆分为结果页面

转载 作者:可可西里 更新时间:2023-11-01 10:43:49 24 4
gpt4 key购买 nike

我的学习应用程序只能创建用户、管理 session 和删除用户。后端在 Node.js 中。

我有检索用户列表的查询

var userList = function ( page, callback ) {
user.find({}, function ( err, doc ) {
if (err) {
callback (err);
}
callback ( doc );
});
};

然后我有将它发送回应用程序的处理程序

var userList = function ( req, res ) {
var page = req.param.page;
models.account.userList( page, function ( result ) {
res.json ( 200, result );
});
};

在客户端,我获取结果并将它们显示在浏览器的表格中。

我想要完成的是将列表拆分为页面...比方说...每页 10 个用户。因此,使用函数 userList 的参数 Page 我希望发送正确的答案:

第 1 页:结果 0 到 9第 2 页:结果 10 到 19等等

我可以做一个循环来提取我想要的东西,但我确信从查询中接收整个用户列表以循环重新处理它以仅提取 10 个用户不是正确的方法,但我想不通找出正确的方法是什么。

我已经用谷歌搜索了,但没有找到我想要的答案。还可以快速查看 MongoDB 文档。

如您所料,我是这方面的新手。

你能帮我指导这个简单任务的正确方法吗?

非常感谢。

使用 bduran 代码,我能够实现我想要的分页。答案后的代码是:

var userList = function ( page, itemsPerPage, callback ) {
user
.find()
.skip( (page - 1) * itemsPerPage )
.limit ( itemsPerPage )
.exec ( function ( err, doc ) {
if (err) {
//do something if err;
}
callback ( doc );
});
};

最佳答案

最简单直接的方法是使用跳过和查询。例如,您选择包含十个元素的页面,然后每页跳过该数量的十倍。使用这种方法,您不需要获取所有元素,并且如果查询排序和索引非常快:

user
.find()
.skip((page-1)*10)
.limit(10)
.exec(function(err, doc){
/*Rest of the logic here*/
});

如果您需要以非自然顺序 (with .sort) 对结果进行排序,您将需要在数据库中创建索引以加速和优化查询。你可以做到with .ensureIndex .在终端中输入你用来做的查询,你就完成了。

db.user.ensureIndex({ createdAt: -1 })

关于node.js - 如何将 mongodb 查询拆分为结果页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23002709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com