2015-06-06 81 views
0

我正在使用用戶組系統。每個小組都有幾個特徵,我想盡可能安全和簡單地與小組集合進行交互,因爲它仍處於早期階段。我應該使用每個集合還是幾個集合來發佈一個?

現在,我在我的網站中使用了幾個嵌套頁面。該部分的目的是允許用戶進入一個組,請求成員資格(如果該組是私人的),瀏覽一個組對象等。

例如,在我的組部分中,我可以加載yield a 「查看所有羣組」頁面,「創建新羣組」頁面或「僅查看我的羣組」(我是其中的成員)或「查看羣組」以獲取羣組詳細信息。

我的第一種方法是爲每個子頁面創建一個controller.js文件,這個子頁面會根據子頁面需求調用一個訂閱。例如,我爲「查看所有組」子頁面提供「all_group」發佈/訂閱,爲「僅查看我的組」子頁面提供「my_groups」。

但是這變得非常混亂。另外,我在兩個文件夾中都聲明瞭我的「組」集合,因此我不確定要跟蹤客戶端可用數據的來源。

現在,我說明了情況,這裏是我的問題:

  • 當我做了console.table(Groups.find().fetch());客戶端,我看到了不應該存在的字段(即不通過我的當前出版物或任何其他返回)。那是因爲我在客戶端聲明瞭「組」集合嗎?如何解決這個問題?
  • 我應該擺脫所有這些出版物,並創建一個客戶端允許看到的一切嗎?然後,我會從組部分頁面控制器訂閱它,並使用一組數據。
  • 我是否應該僅使用allow/deny規則阻止任何插入/更新/從客戶端移除並僅使用這些方法?
  • 是否安全/建議將我的方法放在both文件夾中,這樣我就不會失去延遲補償功能?

編輯 好吧,我被嚇壞了,因爲我已經在客戶端的所有我收集的數據,但它只是在發佈(我用的是兩個field:1field:0預測),一個壞的查詢。 兩個問題是:

  1. 如果我使用的方法,我想我沒有否認在本地驅動程序的一切,我只是比更嚴格什麼方法允許,對不對?
  2. 如果我把我的方法放在這兩個文件夾中,它將在客戶端和服務器上執行,所以在「客戶端脫機」上下文中,即使客戶端與我的方法混淆,服務器也應該回滾更改結果與他不同(假設使用允許拒絕規則無法完成這些更改)?即使使用這些方法,我也會有延遲補償工作嗎?

回答

1

爲了更好地控制和可視化您的訂閱,您可以使用msavin:mongol

創建一個全面發佈並不是一個明智的性能方面的好主意(將所有數據發送給所有客戶端將是所有參與者的痛苦)。

如果您使用方法並已刪除autopublish,那麼是的一切都被拒絕...除了用戶自己的配置文件更新。你可能也想手動否認這一點。

使用方法和收集規則,您應該共享驗證代碼。這樣,客戶端和服務器以同樣的方式進行驗證(並且應始終得出相同的結果),因此除非您的客戶端與控制檯搞砸了,否則應該沒有問題,應該保持滯後補償。
如果你的服務器方法做了一些客戶不應該知道的事情,你也可以在服務器上定義一次方法,並在客戶端定義一次。同樣的效果。

相關問題