你如何拒绝在流星中读取集合?
没有允许/拒绝方法,您无法在集合发布过滤器中执行此操作,因为它只运行一次。我感到震惊,我认为如果你拒绝阅读,模板可能会变成空白。
Meteor看起来在具有单一类型用户的网站中运行良好,但如何更多地分离数据以供阅读?
答案 0 :(得分:3)
检查用户角色后,您可以在发布回调函数中调用.stop()
这里有一个例子。 https://github.com/alanning/meteor-roles#usage-examples
Meteor.publish('secrets', function (group) {
if (Roles.userIsInRole(this.userId, ['view-secrets','admin'], group)) {
return Meteor.secrets.find({group: group});
} else {
// user not authorized. do not publish secrets
this.stop();
return;
}
});
经过大量的谷歌搜索,我找到了这个答案。希望这有助于其他人。我仍然觉得很奇怪你不能只在allow或deny上定义一个read属性并实现相同的行为。
答案 1 :(得分:0)
我的回答是对集合的拒绝读取操作:
这个AFAIK没有官方解决方案,但我认为有一个社区包
试
meteor add matb33:collection-hooks
链接到大气层https://atmospherejs.com/matb33/collection-hooks
上的包裹从页面
使用挂钩之前/之后扩展Mongo.Collection 插入/更新/删除/发现/查找
从github复制粘贴一些示例代码
.before.find(userId, selector, options)
.after.find(userId, selector, options, cursor)
.before.findOne(userId, selector, options)
.after.findOne(userId, selector, options, doc)