meteor.js:通过电子邮件查找用户

Pet*_*rov 20 meteor

在我的meteor.js应用程序中,我正在尝试编写一个简单的管理页面,可以通过他/她的电子邮件地址找到用户.

我可以看到,在Meteor.users集合中有一个"电子邮件"数组,其中包含这样的对象

{ address : 'foo@foo.com',
  verified : false
}
Run Code Online (Sandbox Code Playgroud)

通常在Mongodb中我可以在这个'电子邮件'数组中搜索,如下所示:

Meteor.users.find({ emails.address : 'foo@foo.com' });
Run Code Online (Sandbox Code Playgroud)

但是这个查询引发了一个错误:

While building the application:
client/admin.js:224:41: Unexpected token .
Run Code Online (Sandbox Code Playgroud)

Aka Meteor不喜欢嵌套查询...

有关如何通过电子邮件地址查询Meteor.users集合的任何想法?

Aks*_*hat 58

你也可以使用你所拥有的,只需将它放在引号中:

Meteor.users.find({ "emails.address" : 'foo@foo.com' });
Run Code Online (Sandbox Code Playgroud)

  • 您可以使用`Meteor.users.findOne`,因为我们正在寻找一个用户. (5认同)

Ale*_*ier 27

如果在服务器上,Meteor有一个特殊功能: Accounts.findUserByEmail(email).

我相信这是推荐的方式.


use*_*291 18

电子邮件中包含一系列电子邮件.每封电子邮件都有一个地址

试试{ emails: { $elemMatch: { address: "foo@foo.com" } } }.

信息$elemMatch在这里.

有关电子邮件作为数组的信息在这里.

  • 谢谢!这很完美.奇怪的是,文档明确表示客户端无法使用$ elemMatch ... (3认同)