流星 - 拒绝阅读?

时间:2015-05-12 03:18:59

标签: meteor

你如何拒绝在流星中读取集合?

没有允许/拒绝方法,您无法在集合发布过滤器中执行此操作,因为它只运行一次。我感到震惊,我认为如果你拒绝阅读,模板可能会变成空白。

Meteor看起来在具有单一类型用户的网站中运行良好,但如何更多地分离数据以供阅读?

2 个答案:

答案 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)