5

次のコマンドを使用してメールでユーザーにクエリを実行しようとしています Meteor.users.findOne({'emails.address': 'me@example.com'});

これはmongoシェルで機能しますが、Meteorでは未定義を返します。

何か案は?

アップデート

他のユーザーに問い合わせることができないことが判明しました。ログインしたユーザーの電子メールを照会するときにも同じ照会が機能します。では、質問は、どのようにしてすべてのユーザーにクエリを実行できるのでしょうか。

4

3 に答える 3

12

デフォルトでは、Meteorはログインしたユーザーのみを公開し、前述のように、そのユーザーに対してクエリを実行できます。他のユーザーにアクセスするには、サーバー上でそれらを公開する必要があります。

Meteor.publish("allUsers", function () {
  return Meteor.users.find({});
});

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

Meteor.subscribe('allUsers');

また、すべてのフィールドを公開したくない場合があるため、公開する/公開しないフィールドを指定できることにも注意してください。

return Meteor.users.find({}, 
{
     // specific fields to return
     'profile.email': 1,
     'profile.name': 1,
     'profile.createdAt': 1
});

コレクションを公開すると、クエリを実行してすべてのユーザーの情報にアクセスできます。

于 2012-11-27T07:11:15.850 に答える
4

これは役立つかもしれません:

 var text = "me@example.com";
 Meteor.users.findOne({'emails.address': {$regex:text,$options:'i'}});

高度なクエリも参照してください

于 2012-11-26T11:57:08.467 に答える