2015-10-07 99 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