Доступ к Meteor.users.update запрещен при добавлении нового поля в текущий документ в коллекции.
Я ищу, чтобы добавить новое поле (массив, который будет заполнен $push в будущем) к текущему документу, но получаю ошибку update failed: MongoError: Cannot apply $push/$pushAll modifier to non-array
Я работаю над коллекцией Meteor.users.
Выполненный код был:
var user = Meteor.userId();
Meteor.users.update({_id:user}, {$set: {"newfield": ["some data"]}});
2 ответа
Решение
Это происходит потому, что вы не должны изменять корневые поля пользовательского объекта. Из документов:
По умолчанию текущий пользователь
username
,emails
а такжеprofile
опубликованы для клиента. Вы можете опубликовать дополнительные поля с [...]
Так что вы можете
Meteor.users.update(user, {$set: {"profile.newfield": ["some data"]}});
Обратите внимание, что вы должны ограничить то, что вы храните вprofile
,
Вам нужно определить "newfield" как массив, иначе операция не удастся. Смотрите здесь: http://docs.mongodb.org/manual/reference/operator/update/push/