尝试从一组评论中提取评分列表,然后对它们进行平均,得出一个评级的平均评分。当我查看评级变量的数据输出时,我得到的只是" undefined undefined undefined"。
averageRating: function() {
var reviews = Reviews.findOne({plateId: this._id});
var ratings = _.pluck(reviews, 'rating');
var sum = ratings.reduce(function(pv, cv){return pv + cv;}, 0);
var avg = sum / ratings.length;
//Testing output
var test = "";
var x;
for (x in reviews) {
text += reviews[x] + ',';
}
return test;
}
很抱歉,如果这是一个超级新手问题,但我已经在这里待了好几个小时而无法解决这个问题。
答案 0 :(得分:0)
我想出了这个问题。如上所列,var reviews
被设置为一个显然.pluck不起作用的游标。通过首先将光标转换为对象数组,然后我可以使用.pluck。所以更新的代码如下所示:
averageRating: function() {
var reviewsCursor = Reviews.find({plateId: this._id});
//Converts cursor to an array of objects
var reviews = reviewsCursor.fetch();
var ratings = _.pluck(reviews, 'rating');
var sum = ratings.reduce(function(pv, cv){return pv + cv;}, 0);
var avg = (sum / ratings.length).toPrecision(2);
return avg;
}