Как обновить пользователей для Meteor в консоли
Как мне обновить пользователей Meteor в консоли chrome? Это без удаления небезопасной и автоматической публикации, которая была включена в установку.
Это то, что я набрал в моей консоли Chrome:
Meteor.users.update ({_ id: 'ARfiiEDnk6NbCEzcX'}, {$ set: {displayName: 'test'}})
Вот что я получил:
1
debug.js: 41 обновление не удалось: доступ запрещен
1 ответ
Вы не можете обновить Meteor.users
коллекция, потому что по соображениям безопасности записи в этой коллекции отключены по умолчанию независимо от insecure
пакет присутствует или нет. Однако есть два исключения из этого правила:
- Клиент может создать новую учетную запись пользователя.
- Зарегистрированный пользователь может обновить свой профиль, например
{ $set: { 'profile.username': '' } }
Если вы действительно хотите обновить различные поля в документах ваших пользователей, то у вас есть как минимум два возможных варианта:
- Создайте собственный метод на вашем сервере - запись на сервер всегда разрешена
- Добавить дополнительные
Meteor.users.allow
правило, смотрите здесь
Я бы порекомендовал первое решение, потому что оно более безопасно.
Еще кое-что. По умолчанию сервер публикует только несколько полей из Meteor.users
коллекция, в том числе emails
а также profile
, Если вы планируете иметь их больше и хотите, чтобы они были доступны в браузере, вам необходимо добавить пользовательскую функцию публикации, например
Meteor.publish('myCustomField', function () {
return Meteor.users.find({ _id: this.userId },
{ fields: { myCustomField: 1 } });
});
А затем подпишитесь на стороне клиента:
Meteor.subscribe('myCustomField');