2013-05-09 187 views
1

我试图确保访问一个特定的集合,但我遇到了麻烦。使用Collection.allow()地图禁止插入,更新和删除,我没有任何问题。流星过滤器集合

问题是我还想过滤Collection.find()Collection.findOne()函数返回的结果。我读了关于Meteor.publish()Meteor.subscribe()的东西,但不知何故我无法使它工作(它没有被过滤,我只能看到所有的结果)。

在我的服务器的代码我做到以下几点:

Groups = new Meteor.Collection("groups"); 
Meteor.publish("myGroups", function() { 
    if (Functions.isAdmin(userId)) { 
     return Groups.find({ 
      sort: { 
       name: 1 
      } 
     }); 
    } 
}); 

我使用的功能,真正起作用的(所以它不是,它总是返回true)。

在客户端的代码,我写了下面的:

Meteor.subscribe("myGroups"); 
Groups = new Meteor.Collection("groups"); 

现在,当我在客户端做Groups.find{});我仍然得到的所有结果(和我应该得​​到无结果)。

我误会了什么或做错了什么?我当然可以使这个集合完全服务器端,并使用Meteor.methods()Meteor.call()来获取收集数据(所以它总是被服务器封装)。但我真的认为这很酷,我不需要那样做。

另外我想知道为什么不能在插入/更新/删除与Collection.allow()相同的水平上完成。我的意思是,我们可能有可能在地图上添加一个过滤器来通过find/findOne读取数据。

+2

你删除与'流星删除自动发布autopublish'? – Akshat 2013-05-09 20:31:34

+0

我现在可以将我的头撞在墙上。我现在做了,它的工作原理,谢谢! :d – g00glen00b 2013-05-09 21:19:43

回答

0

像@Tarang说,通过执行以下命令删除作品自动发布:

meteor remove autopublish