以下是我的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");
});
}
});
我已尝试将next()
替换为toArray()
和each()
,如下所示:
http://mongodb.github.io/node-mongodb-native/2.0/tutorials/aggregation/
但是,我每次都会收到同样的错误:
TypeError: User.aggregate(...).next is not a function
为什么我不能用任何类型的函数迭代返回的文档?
是因为User
不是集合吗?
答案 0 :(得分:3)
试试这个:
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-native不同。更多信息请访问:mongoose aggregate cursor documentation