运行某些代码时,Meteor会抛出throwIfSelectorIsNotId异常。我有两个客户端运行相同的代码,当第二个客户端运行相同的代码时,抛出异常。
无法弄清楚此异常的含义以及抛出的原因。希望有人能够解释它。
答案 0 :(得分:3)
对于客户端上的某些操作(因为版本0.57,我认为是)。进行更新操作时,例如
MyCollection.update({name:"John Doe"},{$set:{age:50}});
您需要在客户端上将其拆分为两部分。 (仅限客户)。
var doc_id = MyCollection.findOne({name:"John Doe"})._id;
MyCollection.update({_id:doc_id,{$set:{age:50}});
您需要先通过_id
找到该文档,然后再更新该文档。选择器只能是_id
和update
的{{1}}。 remove
操作。
这是因为meteor的设计存在安全风险,如果有客户端mongodb数据库,它可以在确定是否允许更新时从服务器上任意获取其他操作的信息。它是在Meteor 0.57中引入的。