在Meteor发布功能中获取用户的电子邮件地址

bul*_*eam 1 javascript mongodb meteor

我有一个集合,其中包含一组用户电子邮件.我需要在发布功能中访问登录用户的电子邮件地址.以下作品:

Meteor.publish("groups", function() {
  return Groups.find({emails: "hand_coded@email.com"}); 
});
Run Code Online (Sandbox Code Playgroud)

这显然是无用的.这些都不起作用:

  Meteor.user().emails[0].address
  this.user.emails[0].address
  this.userId.emails[0].address
Run Code Online (Sandbox Code Playgroud)

这里访问用户电子邮件地址的正确方法是什么?

Hub*_* OG 5

您是否将该subscribe功能置于反应环境中?当用户尚未设置时,可以首先调用发布函数,在这种情况下this.user将是null.您应该在发布方法中检查这一点.另外,根据文档,只有this.userId参数可用,因此您需要自己获取用户对象:

Meteor.publish('groups', function() {
  if(!this.userId) return [];
  var user = Meteor.users.findOne(this.userId);
  ... /* use user.emails[0].address to search for and return the right groups */
});
Run Code Online (Sandbox Code Playgroud)

另外,将您的订阅函数包装在反应中:

Deps.autorun(function() {
  Meteor.subscribe('groups');
});
Run Code Online (Sandbox Code Playgroud)