Meteor.js根据集合对象和用户角色的值自定义发布

时间:2013-11-15 14:25:32

标签: javascript meteor

我仍然试图掌握Meteor中定制出版的概念。

有一个名为Pages的集合。此集合包含“隐私”字段。该字段可以包含值“private”和“public”。还有用户角色。根据隐私字段值,我想检查是否允许当前用户查看此页面,然后发布或不发布此特定Collection对象。

因此,服务器上的发布方法就像这样(完全即兴):

Meteor.publish('pages', function () {

if (Roles.userIsInRole(this.userId, ['admin', 'viewer']) 
         && this.privacy == 'private') {
    return Pages.find();
} else {
  if (this.privacy == public) {
     return Pages.find();
  } else {
  // Not authorized
  this.stop();
  return;
  }
}
});

此代码中的问题显然是“this”不会引用Collection中的一个特定对象。但是我希望能够访问已发布集合的单个对象来执行此用户角色检查。

非常感谢任何提示。

1 个答案:

答案 0 :(得分:1)

您需要返回已过滤的游标。

Meteor.publish('pages', function () {
  return Pages.find({privacy:"public"});
}

请参阅Data and security章节。