5

我正在尝试使用以下命令通过电子邮件查询用户 Meteor.users.findOne({'emails.address': 'me@example.com'});

它在 mongo shell 中工作,但在 Meteor 中返回 undefined。

有任何想法吗?

更新

原来我无法查询其他用户。当我查询登录的用户电子邮件时,相同的查询有效。那么现在的问题是如何查询所有用户?

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 回答
1

首先,您需要按照上述答案发布用户并运行以下命令

Meteor.users.find({"emails": "me@example.com"}).fetch()

或者

Meteor.users.find({"emails.0": "me@example.com"}).fetch()
于 2015-07-16T07:01:39.050 回答