Как обновить пользователей для Meteor в консоли

Как мне обновить пользователей Meteor в консоли chrome? Это без удаления небезопасной и автоматической публикации, которая была включена в установку.

Это то, что я набрал в моей консоли Chrome:

Meteor.users.update ({_ id: 'ARfiiEDnk6NbCEzcX'}, {$ set: {displayName: 'test'}})

Вот что я получил:

1

debug.js: 41 обновление не удалось: доступ запрещен

1 ответ

Вы не можете обновить Meteor.users коллекция, потому что по соображениям безопасности записи в этой коллекции отключены по умолчанию независимо от insecure пакет присутствует или нет. Однако есть два исключения из этого правила:

  1. Клиент может создать новую учетную запись пользователя.
  2. Зарегистрированный пользователь может обновить свой профиль, например { $set: { 'profile.username': '' } }

Если вы действительно хотите обновить различные поля в документах ваших пользователей, то у вас есть как минимум два возможных варианта:

  1. Создайте собственный метод на вашем сервере - запись на сервер всегда разрешена
  2. Добавить дополнительные Meteor.users.allow правило, смотрите здесь

Я бы порекомендовал первое решение, потому что оно более безопасно.

Еще кое-что. По умолчанию сервер публикует только несколько полей из Meteor.users коллекция, в том числе emails а также profile, Если вы планируете иметь их больше и хотите, чтобы они были доступны в браузере, вам необходимо добавить пользовательскую функцию публикации, например

Meteor.publish('myCustomField', function () {
  return Meteor.users.find({ _id: this.userId },
      { fields: { myCustomField: 1 } });
});

А затем подпишитесь на стороне клиента:

Meteor.subscribe('myCustomField');
Другие вопросы по тегам