我有一個模板事件,允許用戶將內容插入Meteor數據庫的集合中。調用方法 'insertChallenge',只是調用ChallengesList.insert(challenge_info)時數據庫更新不起作用流星法
var challenge_info = {
"creator_id": Meteor.userId(),
"creator_firstname": creat_firstname,
"creator_avatarurl": Session.get('chUser').avatar_url,
"recepient_id": recepient_id,
"recepient_firstname": recepient_firstname,
"recepient_avatarurl": recepient_avatarurl,
...
"state": 0
};
Meteor.call('insertChallenge', challenge_info);
Meteor.call('incrementStatistic', Meteor.userId(),'c_sent');
Meteor.call('incrementStatistic', recepient_id,'c_pending');
Session.set('new_challenge_reset', true);
Router.go('home');
一切工作正常。
但是當試圖調用'incrementStatistic'方法時,沒有任何反應。終端不會給我任何錯誤,而且我無法在瀏覽器控制檯上測試查詢(從客戶端更新數據庫,但沒有在Meteor中選擇是不可能的,並且我已經刪除了自動發佈)。
這裏有方法(內Meteor.methods()):
incrementStatistic : function(user_id, stat){
UserStatistics.update({"user_id": user_id}, {"$inc" : {stat: 1}});
},
decrementStatistic : function(user_id, stat){
UserStatistics.update({"user_id": user_id}, {"$inc" : {stat: 1}});
},
createStatistics : function(){
UserStatistics.insert({'user_id': Meteor.userId(), 'c_won': 0, 'c_lost': 0, 'c_accepted': 0 , 'c_rejected': 0, 'c_pending': 0, 'c_sent': 0});
return true;
}
我能夠檢索收集信息(在另一個模板),使用UserStatistics.findOne({"user_id": Meteor.userId()});
,但增加的幅度永遠不會奏效。
雖然可能沒有這個問題做的,我也有一個使用Collection.update(),它工作得很好的服務器方法(儘管它使用_id
爲選擇):
updateChallengeState: function(challenge_id, new_challenge_state){
ChallengesList.update({_id: challenge_id}, {"$set" : {"state": new_challenge_state}});
}
任何人對可能發生的事情有任何線索?
你確定服務器方法被調用,用戶記錄在userstatistics存在之前是否存在? – Sasikanth
什麼不工作?如果您可以在不同模板中檢索用戶數據並且數據正確,那麼這些'incrementStatistic'調用正在更新數據庫。你有沒有更新你的模板的問題?也許你需要顯示你的模板html和helpers。 –
@Sasikanth,是的。創建新帳戶時,我使用'createStatistics'方法創建記錄,並且記錄存在並且填充良好。 –