【发布时间】:2023-03-30 09:16:01
【问题描述】:
我正在使用 NodeJS/ExpressJS 和 MongoDB 构建一个由两个团队和用户组成的寻宝网络应用程序。每个用户都有个人分数,这些分数会添加到团队分数中。我想在仪表板视图上显示两个团队的总分。我使用 MongoDB 的聚合框架来查询数据库。这是可以正常工作并返回对象数组的代码。
module.exports.getTotalTeamScore = function () {
User.aggregate([
{ $group: {
_id: "$team",
total: { $sum: "$score"}
}}
], function (err, results) {
if (err) {
console.error(err);
} else {
console.log(results);
return results;
}
}
);
}
我在用户模型文件中创建了这个函数。现在,当我通过
从某个路由文件中调用此函数时var teamsObj = User.getTotalTeamScore();,
它确实给出了如下的对象数组,但是它是未定义的。
[ { _id: 'Team Black', total: 40 },
{ _id: 'Team Red', total: 60 } ]
问题是我无法在路由文件中做这样的事情。 (我可以在存在getTotalTeamScore 函数的用户模型文件中正常访问它):
teamsObj[0].total
我得到的错误是TypeError: Cannot read property 'total' of undefined。
请帮我解决这个问题。我还是 NodeJS/ExpressJS 和 MongoDB 的新手,想学习。
谢谢
【问题讨论】:
-
告诉我你是如何从其他路由文件调用这个函数 getTotalTeamScore 的。粘贴您的代码。您的 getTotalTeamScore 有问题,它返回结果的方式。
-
添加到原始问题
标签: node.js mongodb express mongoose aggregation-framework