Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 基于当前用户属性发布Meteor集合_Javascript_Mongodb_Meteor - Fatal编程技术网

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
时,这对我来说很有效。但是在许多收藏上这样做是否有效?