MongoDB的選擇會是什麼這個的替代查詢的替代流星客戶
Polls.update({_id: id, "choices.option" : choice}, {$set : {"choices.$.vote_count" : updated_count}});
要在流星客戶端運行。由於meteor
不再允許除id
之外的任何其他選擇器。在這種情況下,這是一個問題,尤其是因爲我不知道數組索引,我試圖通過使用另一個變量來獲取它。
MongoDB的選擇會是什麼這個的替代查詢的替代流星客戶
Polls.update({_id: id, "choices.option" : choice}, {$set : {"choices.$.vote_count" : updated_count}});
要在流星客戶端運行。由於meteor
不再允許除id
之外的任何其他選擇器。在這種情況下,這是一個問題,尤其是因爲我不知道數組索引,我試圖通過使用另一個變量來獲取它。
可能有更好的辦法,但你可以修改現有的選擇數組,然後再次$set
。
var choices = Polls.findOne(id).choices;
_.each(choices, function(c) {
if (c.option === choice) {
c.vote_count = updated_count;
}
});
Polls.update(id, {$set: {choices: choices}});
從Meteor 0.7.1開始,您可以在客戶端上執行位置更新,但是您必須將呼叫包裝在流星方法中。這是因爲流星不允許不信任代碼的任何非ID選擇1
確保文件上均可client
和server
,爲具有客戶端版本將模擬效果(ALA延遲補償) 。
例如,
Meteor.method({
"poll.updateChoice": function(id, choice, updated_count){
Polls.update({_id: id, "choices.option" : choice},
{$set : {"choices.$.vote_count":updated_count}});
}
});
是啊,我真的不希望,雖然走這條路。但我可能必須像現在這樣。 – user1952811
我最終走上了類似的路線,所以我會接受你的答案。 – user1952811