2015-10-07 61 views
0

我是初学者,并且遵循一个教程来制作评论产品应用程序,而不是仅仅复制粘贴代码,尝试对其进行一些实验以获得更深入的知识。我有一个关于我的应用程序想要显示产品的平均评分和总评价

1)我增加了一些更多的功能,以我的应用程序,并写了includes.jsreviews.html一些代码来显示平均评分和产品的总复习两个问题。如何显示被点击的产品的平均评分和评论数量?

2)我增加产品类别列出侧栏上显示(如电子,服装,书籍),通过镀铬控制台将其添加手动,例如像这样

Categories.insert({name:'Eelctronics',slug:'electronics'}); 

所以我已经部署该应用程序上免费的流星主机,每次有人运行这个应用程序,他必须在Chrome控制台手动编写以上代码来获取类别列表。即使有人从gitHub克隆我的项目也无法看到左侧栏中的类别列表,他也必须在控制台中编写相同的代码。那么,如何在侧栏中显示类别列表而无需在控制台中编写上面的代码?

你可以检查gitHub repository的源代码。

回答

1

1)显示平均评分和评论数

<p>Average Rating: <img class="stars" src="/img/star{{averageRating}}.png"> ({{countReviews}})</p> 

我搬到这个代码到reviews.helpers部分

Template.reviews.helpers({ 
    'reviews': function() { 
    return Reviews.find({productId: Router.current().data()._id}) 
    }, 

    countReviews: function(){ 
    return Reviews.find({productId: Router.current().data()._id}).count(); 
    }, 

    averageRating: function() { 
    var reviews = Reviews.find({productId: Router.current().data()._id}); //get all reviews for productId 
    //var ratings = reviews.map(function(player){return player.score;}); // get just the ratings, or use _.pluck 
    var ratings = _.pluck(reviews, 'ratings'); // get just the ratings i.e. [1, 5, 3, 2, 5] 
    var sum = ratings.reduce(function(pv, cv){return pv + cv;}, 0); //sum ratings i.e. 14 
    var avg = sum/ratings.length; // i.e. 2.8 
    return Math.round(2.8); // round avg to ensure only integer values are returned 
    }, 

}) 

2)种子数据库

Docs将Meteor.startup块添加到种子数据库

// On server startup, if the database is empty, create some initial data. 
if (Meteor.isServer) { 
    Meteor.startup(function() { 
    if (Categories.find().count() === 0) { 
     Categories.insert({name:'Electronics',slug:'electronics'}); 
     Categories.insert({name:'Fashion',slug:'fashion'}); 
     Categories.insert({name:'Books',slug:'books'}); 
    } 
    }); 
} 
+0

你能否帮我解答第一个问题,如何显示被点击的产品的总体评价和平均评分? @JeremyK – Waqar

+0

averageRating帮助函数仍未显示平均评分。你能否也请解释一下这个函数是如何工作的? @Jeremyk – Waqar

+0

当然我会分解成更多的步骤。 – JeremyK