我正在更新一个网站,以在NodeJS和MongoDB上构建寻宝游戏,并且记分板功能出现问题。
我的所有环境变量在本地计算机和实时站点上都是相同的,但是在部署它时出现错误
“ MongoError:“ cursor”选项是必需的,但带有说明参数的聚合除外”
以下是我正在使用的汇总
module.exports.getScores = (callback) => {
Team.aggregate([
{ $group: {
_id: "$code",
name: { $first: "$name"},
total: { $sum: "$score"}
}}
],
(err, results) => {
if (err) {
callback(err);
console.error(err);
} else {
callback(null, results);
}
}
);
}
我已经搜索了该问题,发现的所有解决方案似乎都不起作用,这就是我要发布的原因。
NodeJS版本:8.10.0
MongoDB版本:3.6.12
答案 0 :(得分:0)
该错误消息与MongoDB 3.6中的更改有关,其中聚合需要返回游标(https://docs.mongodb.com/manual/release-notes/3.6-compatibility/#aggregate-command-and-results)。
在这种情况下,由于使用的Mongoose版本(4.8.6)未列出与MongoDB 3.6兼容而引发错误。 compatibility pages说,您需要使用5.x
版本的猫鼬
有关更多信息,请参见Neil Lunn的评论here。