Node.js 从聚合遍历Mongodb游标
以下是my node.js后端的代码:Node.js 从聚合遍历Mongodb游标,node.js,mongodb,Node.js,Mongodb,以下是my node.js后端的代码: app.get('/getpossibleconnections', auth, function(req, res){ if (req.authenticated == false){ res.send("Your session has expired."); } else { User.aggregate([ { $match: { _id: { $nin: req.decode
app.get('/getpossibleconnections', auth, function(req, res){
if (req.authenticated == false){
res.send("Your session has expired.");
} else {
User.aggregate([
{ $match: { _id: { $nin: req.decoded.username.connections } } },
{ $sample: { size: 10 } },
]).next(function(err, docs) {
console.log("horray");
});
}
});
我尝试用toArray()
和each()
替换next()
,如下所示:
但是,我每次都会收到相同的错误:
TypeError:User.aggregate(…).next不是函数
为什么我不能用任何函数迭代返回的文档
是因为User
不是一个集合吗?试试这个:
var cursor = User.aggregate([
{ $match: { _id: { $nin: req.decoded.username.connections } } },
{ $sample: { size: 10 } },
]).cursor().exec();
cursor.each(function(err, doc) {
//do something with doc
});
Mongoose处理聚合到游标对象的方式与您在链接中发布的Mongodb本机不同。此处的更多信息:一种可能的解决方案是简单地传递回调并对结果进行迭代。变量“User”分配给什么?在提供的链接中,他们连接到一个数据库,然后将一个变量设置为该数据库中的一个集合,你也这样做了吗?@devonJS User是一个模型,但我使用的是mongoose,据我所知,mongoose会自动将一个集合与每个模型类型相关联。你绝对是一个传奇人物。谢谢