Javascript TypeError:无法读取属性';评级VG';nodejs中未定义的
我已经从github下载了这个项目,但是我在运行时遇到了这个错误。似乎错误在于从数据库检索评论。 这个项目的后端是在nodejs中完成的,前端是在angularjs中完成的。 我已经发布了一些可能发生此错误的代码和错误控制台。 请帮我解决这个问题。 事先非常感谢你 Preview.jsJavascript TypeError:无法读取属性';评级VG';nodejs中未定义的,javascript,node.js,Javascript,Node.js,我已经从github下载了这个项目,但是我在运行时遇到了这个错误。似乎错误在于从数据库检索评论。 这个项目的后端是在nodejs中完成的,前端是在angularjs中完成的。 我已经发布了一些可能发生此错误的代码和错误控制台。 请帮我解决这个问题。 事先非常感谢你 Preview.js exports.getRentalRating = function(req, res) { const rentalId = req.params.id; Review.aggregate([
exports.getRentalRating = function(req, res) {
const rentalId = req.params.id;
Review.aggregate([
{"$unwind": "$rental"},
{"$group": {
"_id": rentalId,
"ratingAvg": {"$avg": "$rating"}
}}], function (err, result) {
if (err) {
return res.status(422).send({errors: normalizeErrors(err.errors)});
}
return res.json(result[0]['ratingAvg'])
})
}
控制台中的错误
App is running!
events.js:167
throw er; // Unhandled 'error' event
^
TypeError: Cannot read property 'ratingAvg' of undefined
at E:\bwm-ng\server\controllers\review.js:94:32
at E:\bwm-ng\node_modules\mongoose\lib\model.js:3954:16
at model.hooks.execPost (E:\bwm-ng\node_modules\mongoose\lib\aggregate.js:811:13)
at E:\bwm-ng\node_modules\kareem\index.js:135:16
at process._tickCallback (internal/process/next_tick.js:61:11)
Emitted 'error' event at:
[nodemon] app crashed - waiting for file changes before starting...
您试图返回结果中不存在的文档属性。您似乎在
result
中没有任何数据,或者它不在您期望的结构中,并且正在尝试访问其中的项目
请添加console.log(结果)在尝试返回数据之前,请执行代码>。所以我们可以看看你有什么数据,如果有的话
变更依据:
Review.aggregate([
{"$unwind": "$rental"},
{"$group": {
"_id": rentalId,
"ratingAvg": {"$avg": "$rating"}
}}], function (err, result) {
if (err) {
return res.status(422).send({errors: normalizeErrors(err.errors)});
}
console.log(result);
// check you have data before you attempt to access properties on it
if(result && result.length > 0) {
return res.json(result[0]['ratingAvg'])
}
// return a empty result etc
return res.json({});
})
您能检查结果[0]的值吗