Для определенных операций с клиентом (начиная с версии 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
& remove
операции.
Это связано с риском безопасности с конструкцией метеор, если бы существовала база данных mongodb на стороне клиента, она могла произвольно получать информацию с сервера о других операциях при определении того, разрешать или нет обновление. Он был введен в Meteor 0.57.
Похоже, это также происходит при попытке выполнить обновления с помощью оператора $ in на клиенте. 'MyCollection.update ({_ id: {$ in: idList}}, someModifier, {multi: true})' выдает ту же ошибку. –
Да, вы не можете использовать этот тип запроса на клиенте. В Essence вам нужно получить результаты и выполнить цикл и выполнить каждый. Множественные обновления не поддерживаются клиентами из-за проблемы с безопасностью, когда вы можете создавать запрос, чтобы узнать о коллекции до того, как обновление будет отклонено (Access Denied) – Akshat