2013-08-22 29 views
0

我正在測試Meteor示例排行榜,並在從Mongo獲取數據時遇到問題。Meteor Session.get和if()

我想一個按鈕來減去的分數,但只有當比分> 0.我的數據庫,代碼:

數據庫:

Players.insert({ 
      name: "Mike", 
      totalscore: [20, 25] 
     }); 

代碼:

Template.vote.events({ 
'click input.dec': function() { 
    var temp = Players.find(Session.get("selected_player", totalscore[1])); 
    if (temp > 0) { 
     Players.update(Session.get("selected_book"), {$inc: {totalscore: -1}}); 
     } 
    } 
}); 

JavaScript控制檯:

Uncaught ReferenceError: totalscore is not defined

回答

0

看來錯誤是因爲您使用totalscore[1]Players.find()

您正在更新totalscore就好像它是一個整數,實際上它是作爲一個數組存儲的。這與分數屬性完全不相關。請用數字來代替陣列totalscore和更新這樣的單擊事件:

var temp = Players.findOne(Session.get("selected_player")); 
if (temp && parseInt(temp.totalscore, 10) > 0) { 
    Players.update(Session.get("selected_player"), {$inc: {totalscore: -1}}); 
} 
+0

您好,它的工作原理,但我有兩個問題:1。 意味着什麼在你的代碼10號? 2.如果我有+10和-10的按鈕,那麼我可以給7點(+1按鈕),並按下-10的結果是-3(即在0以下) – Sebastian

+0

1.數字10在' parseInt()'是基數的值。請參閱[doc](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt) 2.如果'totalscore'爲0,則必須指定該條件那麼不要執行'update'查詢。 –