运行某些代码时,Meteor 会抛出 throwIfSelectorIsNotId 异常。我有两个客户端运行相同的代码,当第二个客户端运行相同的代码时会引发异常。
无法弄清楚这个异常的含义以及抛出的原因。希望有人能解释一下。
最佳答案
对于客户端上的某些操作(我认为是从 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
。
这是因为meteor的设计存在安全风险,如果有客户端mongodb数据库,它可以任意从服务器获取其他操作的信息,同时决定是否允许更新。它是在 Meteor 0.57 中引入的。
关于exception - Meteor 抛出 throwIfSelectorIsNotId 异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16687453/