gpt4 book ai didi

javascript - 尝试获取平均评分时出现错误模板助手中出现异常 : TypeError: Cannot read property 'rating' of null

转载 作者:行者123 更新时间:2023-12-03 08:24:51 25 4
gpt4 key购买 nike

我有两个菜谱和评论集合,用户可以评论一个菜谱,并可以从 1 到 5 对其进行评分,我试图获得菜谱的平均评分,但出现错误模板助手中出现异常:TypeError:无法读取属性“评级”为 null您能指导我犯了什么错误以及如何解决它吗?

collections.js

Recipes = new Mongo.Collection('recipes');
Reviews = new Mongo.Collection('reviews');

add_review.js

Template.add_review.events({
'submit .add-review':function(event){
var rating = event.target.rating.value;
var review = event.target.review.value;
Reviews.insert({
rating:rating,
review:review,
recipeId:Router.current().data()._id
});

return false;
})

获得平均评分的 helper

Template.reviews.helpers({

averageRating: function() {
var reviews = Reviews.find({recipeId: Router.current().data()._id});
var ratings = _.pluck(reviews, 'rating');
var sum = ratings.reduce(function(pv, cv){return pv + cv;}, 0);
var avg = sum / ratings.length;
return Math.round(avg);
}
})

最佳答案

find返回一个光标。为了使评论成为数组,您需要使用 fetch像这样:

var reviews = Reviews.find({recipeId: Router.current().data()._id}).fetch();

另请注意,您需要防止评级为空数组的情况。在这种情况下,您的平均值将返回Infinity。也许是这样的:

Template.reviews.helpers({
averageRating: function() {
var selector = {recipeId: Router.current().data()._id};
var reviews = Reviews.find(selector).fetch();

if (reviews.length === 0)
return 0;

var ratings = _.pluck(reviews, 'rating');
var sum = ratings.reduce(function(pv, cv){return pv + cv;}, 0);
var avg = sum / ratings.length;
return Math.round(avg);
}
});

推荐阅读:meteor common mistakes .

关于javascript - 尝试获取平均评分时出现错误模板助手中出现异常 : TypeError: Cannot read property 'rating' of null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33596546/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com