流星:mongodb更新不起作用
Posted
技术标签:
【中文标题】流星:mongodb更新不起作用【英文标题】:Meteor: mongodb update not working 【发布时间】:2015-03-21 22:46:21 【问题描述】:这个更新功能有什么问题?
fixrecs2 = function()
var arr = myColl.find( d: 1 ).fetch();
for (var i = 0; i < arr.length; i++)
var code = arr[i].c;
var rec = myOtherColl.findOne( cc: code );
if (rec)
c(rec._id)
myOtherColl.update( _id: rec._ID , $set: dt: "ant" );
console.log(i + " records processed.");
我以前从未以这种方式更新我的文档。检查控制台中的输出,我可以知道我希望找到的所有记录都在那里。我可以看到他们的 _id 值由 console.log() 打印。但是 dt 字段没有得到更新。在某些情况下,dt 字段已经存在,在某些情况下不存在,但 update 应该添加一个字段,如果它不存在,对吧?
我尝试添加回调,但它似乎没有运行。 (我一直无法为更新函数找到一个好的回调示例。)无论如何,根据文档,如果更新失败,我应该在控制台中收到一条错误消息。我仍在运行不安全的软件包,因此无需担心允许或拒绝规则。我真的被这个难住了!
【问题讨论】:
你试过myOtherColl.update( '_id' : rec._ID , $set: dt: "ant" )
,在_id
周围加引号吗? this 页面上的大多数示例都使用引号。还有一件事,你确定rec._ID
是一个ObjectID 吗?
当然,就是这样! objectID 字段是:_id 而不是 _ID。我在这一行中正确: c( rec._id ) 但不在更新命令中。感谢您发现这一点!
好的,我添加了一个答案来解决这个问题。
【参考方案1】:
本例中的问题,原来是一个简单的拼写错误,rec._ID
与 rec._id
不同。由于 MongoDB 的 ObjectID
的通用大写,这可能被忽略了。
【讨论】:
以上是关于流星:mongodb更新不起作用的主要内容,如果未能解决你的问题,请参考以下文章