我試圖確保訪問一個特定的集合,但我遇到了麻煩。使用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讀取數據。
你刪除與'流星刪除自動發佈autopublish'? – Akshat 2013-05-09 20:31:34
我現在可以將我的頭撞在牆上。我現在做了,它的工作原理,謝謝! :d – g00glen00b 2013-05-09 21:19:43