通过meteor在mongodb数组中插入/更新

时间:2015-03-26 16:56:09

标签: arrays mongodb meteor

我试图从流星应用程序中保存每个用户在mongodb中投票的结果。几个小时我还没有成功。这就是我所拥有的:

mongodb收集决定: Decision._id Decision.votes []

一开始,一切都是空的。

在应用程序中,我生成结果并在服务器上调用:

'updDecisionVote':function(id,userid,votum){
    Decision.update({_id:id,votes:[{user:userid,vote:votum}]});
}

但是我不断得到一个错误的500并没有更多的信息。如果是更新,我会读到如果记录不存在则会创建记录。

所以我努力插入。另一个有趣的问题是:此更新会更新决策记录。但是,如果用户想要更改他的投票,上述更新是否会涵盖此更新,还是会有进一步的记录?

1 个答案:

答案 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}});