0

Chrome のコンソールで Meteor ユーザーを更新するにはどうすればよいですか? これは、インストールに含まれていた安全でない自動公開を削除するものではありません。

これは、Chrome コンソールに入力したものです。

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

これは私が得たものです:

1

debug.js:41 更新に失敗しました: アクセスが拒否されました

4

1 に答える 1

1

パッケージが存在するかどうかMeteor.usersに関係なく、セキュリティ上の理由から、このコレクションへの書き込みはデフォルトで無効になっているため、コレクションを更新することはできません。insecureただし、この規則には 2 つの例外があります。

  1. クライアントは、新しいユーザー アカウントを作成できます。
  2. ログインしたユーザーは、プロファイルを更新できます。{ $set: { 'profile.username': '' } }

ユーザーのドキュメントのさまざまなフィールドを本当に更新したい場合は、少なくとも 2 つの選択肢があります。

  1. サーバーでカスタム メソッドを作成します。サーバーへの書き込みは常に許可されます。
  2. 追加のMeteor.users.allowルールを追加、こちらをご覧ください

より安全な最初のソリューションをお勧めします。

もう一つ。デフォルトでは、サーバーはコレクションから と を含むいくつかのフィールドのみを公開します。それらをさらに追加する予定があり、それらをブラウザで利用できるようにしたい場合は、カスタム公開機能を追加する必要があります。Meteor.usersemailsprofile

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

そして、クライアント側でサブスクライブします。

Meteor.subscribe('myCustomField');
于 2015-03-12T20:38:16.467 に答える