我正在尝试进行简单的更新
Collection.update(id, {$set:{name:value}});
甚至
Collection.update({'_id':id}, {$set:{name:value}});
但如果id
是传统的mongodb id,则该集合不会更新。它似乎只适用于流星自己实现的唯一id。我该如何解决这个问题。流星有可能接受mongo自己的id结构吗?
答案 0 :(得分:7)
你是对的:Meteor的DDP协议不支持非JSON类型,例如Mongo ObjectId
。我们知道这是一个问题:它是我们的oldest open issue,它位于our roadmap。
虽然肯定有一些“简单”快速解决方案可以解决这个问题,但我们更愿意在扩展协议以处理其他非JSON类型(日期,二进制blob等)而不是一个特定的短期黑客。
答案 1 :(得分:6)
可以使用新的ObjectID将您的ID转换为mongodb对象(在服务器端),然后进行更新。 :
var ObjectID, require;
require = __meteor_bootstrap__.require;
ObjectID = require("mongodb").ObjectID;
Meteor.methods({
SomeUpdate: function(upd) {
var id;
id = new ObjectID(upd['_id']);
return SomeDB.update({
_id: id
}, {
$set: {
field: value
}
}, function(res) {
return console.log(res);
});
}
});