Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.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
Node.js 从聚合遍历Mongodb游标_Node.js_Mongodb - Fatal编程技术网

Node.js 从聚合遍历Mongodb游标

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

以下是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.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会自动将一个集合与每个模型类型相关联。你绝对是一个传奇人物。谢谢