我想将一个集合发布给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}]});
});
我不想在客户端发布整个集合和查询,因为我担心这些集合可能会变得太大。
有什么建议吗?感谢。
答案 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}]});
});