我仍然试图掌握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中的一个特定对象。但是我希望能够访问已发布集合的单个对象来执行此用户角色检查。
非常感谢任何提示。
答案 0 :(得分:1)
您需要返回已过滤的游标。
Meteor.publish('pages', function () {
return Pages.find({privacy:"public"});
}
请参阅Data and security章节。