我试图从流星应用程序中保存每个用户在mongodb中投票的结果。几个小时我还没有成功。这就是我所拥有的:
mongodb收集决定: Decision._id Decision.votes []
一开始,一切都是空的。
在应用程序中,我生成结果并在服务器上调用:
'updDecisionVote':function(id,userid,votum){
Decision.update({_id:id,votes:[{user:userid,vote:votum}]});
}
但是我不断得到一个错误的500并没有更多的信息。如果是更新,我会读到如果记录不存在则会创建记录。
所以我努力插入。另一个有趣的问题是:此更新会更新决策记录。但是,如果用户想要更改他的投票,上述更新是否会涵盖此更新,还是会有进一步的记录?
答案 0 :(得分:1)
500错误意味着服务器有错误,但服务器dosnt知道原因。
所以让我们将Meteor.method
更改为这样(在客户端执行所有逻辑)
'updDecisionVote':function(id,userid,votum){
Decision.update(id,userId,votum);
}
还可以在Meteor.call
上使用回调来获取错误的更多信息(如果存在),如下所示(使用$push运算符)
Meteor.call('upDecisionVote',this._id,{$push:{user:userId,vote:votum}},function(err,result){
if(err){
console.log(err.reason)
}else{
console.log("Vote Done")
}
})
顺便说一下,为什么不在客户端做到这一点?并创建正确的allow/deny
规则?
Decision.update(this._id,{$push:{user:userId,vote:votum}});