在Meteor.publish中访问Meteor.users.emails [0] .address

时间:2014-08-26 13:55:12

标签: meteor

我想将一个集合发布给this.userId(该部分正在工作)以及所有者邀请的所有者访问的所有者。我能做到这一点的唯一方法是通过我的集合中的invite.email,因为被邀请的用户可能还不是注册用户。

Meteor.publish("meals", function () {
  var current_user = Meteor.user();
    return MealModel.find(
  {$or: [{"invited.email": current_user.emails[0].address}, {owner: this.userId}]});
});

我不想在客户端发布整个集合和查询,因为我担心这些集合可能会变得太大。

有什么建议吗?感谢。

1 个答案:

答案 0 :(得分:0)

很遗憾,您无法在发布功能中使用Meteor.user()。相反,您需要使用findOne执行userId。试一试:

Meteor.publish('meals', function() {
  if (!this.userId)
    return this.ready();

  var user = Meteor.users.findOne(this.userId);
  var email = user.emails[0].address;
  return MealModel.find({$or: [{'invited.email': email}, {owner: this.userId}]});
});