2013-08-23 53 views
0

我已將流星榜排行榜更改爲投票應用。我有一些數組的文件,在這個數組中有6個值。這6個值的總和工作正常,但不更新和顯示我的應用程序中的值。使用自己的數據更新流星排行榜

這些值只是更新,如果我點擊它們。問題是,我從「selected_books」變量(之前的selected_players)中獲得書名(它是書籍的投票應用程序),但我不知道如何獲取書名。

順便說一句:_id是書名。 我會給你一些代碼片段和希望,有人有一個解決方案。

這是從我的數據庫中的文檔:

{ 
    _id: "A Dance With Dragons: Part 1", 
    isbn: 9780007466061, 
    flag: 20130901, 
    score20130714: [1,2,3,4,5,0], 
} 

部分我的html文件:

<template name="voting"> 
    ... 
    <div class="span5"> 
     {{#each books}} 
      {{> book}} 
     {{/each}} 
    </div> 
    ... 
</template> 

<template name="book"> 
    <div class="book {{selected}}"> 
     <span class="name">{{_id}}</span> 
     <span class="totalscore">{{totalscore}}</span> 
    </div> 
</template> 

和我的JavaScript文件的部分:

Template.voting.books = function() { 
    var total = 0; 
    var book = Session.get("selected_book"); 

    Books.find({_id:book}).map(function(doc) { 
     for (i=0; i<6; i++) { 
      total += parseInt(doc.score20130714[i], 10); 
     } 
    }); 
    Books.update({_id:book}, {$set: {totalscore: total}}); 

    return Books.find({flag: 20130901}, {sort: {totalscore: -1, _id: 1}}); 
}; 

在此先感謝

回答

0

不要更新幫助程序中的數據,您可以在其中獲取它!使用第二個幫助程序來彙總信息或用於修改數據項目的變換。例如:

Template.voting.books = function() { 
    return Books.find({}, {sort: {totalscore: -1, _id: 1}}); 
}; 

Template.books.totalscore = function() { 
    var total = 0; 
    for(var i=0; i<6; i++) { 
     total += this.score[i]; 
    } 
    return total; 
}; 

作爲一個側面說明,不要使用構建for (i=0; i<6; i++),這是致命的。 總是聲明你的索引變量:for (var i=0; i<6; i++)