2

运行某些代码时,Meteor 会抛出 throwIfSelectorIsNotId 异常。我有两个客户端运行相同的代码,当第二个客户端运行相同的代码时抛出异常。

无法弄清楚此异常的含义以及引发它的原因。希望有人能够解释它。

4

1 回答 1

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然后更新该文档。选择器只能是_idfor update&remove操作。

这是因为meteor的设计存在安全风险,如果有客户端的mongodb数据库,它可以在决定是否允许更新时任意从服务器获取其他操作的信息。它是在 Meteor 0.57 中引入的。

于 2013-05-22T09:52:45.173 回答