2013-05-09 116 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