.pluck在Meteor中返回undefined

时间:2016-03-01 06:21:46

标签: meteor

尝试从一组评论中提取评分列表,然后对它们进行平均,得出一个评级的平均评分。当我查看评级变量的数据输出时,我得到的只是" 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;
}

很抱歉,如果这是一个超级新手问题,但我已经在这里待了好几个小时而无法解决这个问题。

1 个答案:

答案 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;

}