Доступ к 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/

Другие вопросы по тегам