Javascript 基于当前用户属性发布Meteor集合
我正在尝试根据用户所属的组发布敏感信息的集合 数据示例:Javascript 基于当前用户属性发布Meteor集合,javascript,mongodb,meteor,Javascript,Mongodb,Meteor,我正在尝试根据用户所属的组发布敏感信息的集合 数据示例: Items: ItemA - GroupA ItemB - GroupA ItemC - GroupB Users: UserA - GroupB UserB - GroupA UserC - GroupA 但是当我试着去做的时候 Meteor.publish('groupItems', function () { return Items.filter({ groupId : Meteor.user().
Items:
ItemA - GroupA
ItemB - GroupA
ItemC - GroupB
Users:
UserA - GroupB
UserB - GroupA
UserC - GroupA
但是当我试着去做的时候
Meteor.publish('groupItems', function () {
return Items.filter({ groupId : Meteor.user().profile.groupId });
}
它失败了,因为在这样的调用中,我只能访问Meteor.userId()
。(如此模糊错误消息所示,服务器端:
sub 5jnantRJ6gyHpTkTy错误的异常:Meteor.userId只能在方法调用中调用。请在发布函数中使用this.userId。
问题:然后如何根据用户属性(如
groupId
)筛选集合?在发布内部,如果用户登录,您可以访问此.userId,它允许您查询数据库中的其余用户信息。因此,您可以将发布重新编写为:
Meteor.publish('groupItems', function () {
if ( ! this.userId ) return []; //return an empty array if no user is logged in.
var user = Meteor.users.find( this.userId );
return Items.filter({ groupId : user.profile.groupId });
});
谢谢!当我将
filter
更改为find
并在用户上使用findOne
时,这对我来说很有效。但是在许多收藏上这样做是否有效?