2016-09-21 64 views
0

本來共享數據,我有以下設置:實時值聽衆在火力地堡

folder:{ 
uid1:{ 
    f1:{} 
    f2:{} 
} 
} 

,我能夠通過收聽該uid的值:

ref('/folder/uid').on('value', functon .... 

的安全規則可以簡單地這樣的:

"folders": { 
    "$uid": { 
    ".read": "auth != null && auth.uid == $uid", 
    ".write": "auth != null && auth.uid == $uid" 
    } 
}, 

但現在我要做的文件夾共享和規劃做了如下:

user:{ 
uid1:{ 
    folderAccessRight:{ 
    read: {fid1:true} 
    write: {fid1:true} 
    } 
} 
} 

folder:{ 
fid1:{} 
fid2:{} 
} 

安全規則可以設置爲檢查$ FID用戶的folderAccessRight JSON存在。但是,由於安全規則不能作爲過濾器,我不能再聽頂層文件夾ref('/ folder')。

如果我在不同的文件夾和用戶添加一個單獨的值聽者具有N個文件夾,我需要Ñ聽衆

問題:具有多個監聽

  • 就會損害性能?
  • 有沒有更好的辦法來組織數據&實時收聽數據?
+0

我開始寫一個答案(我現在把它留作存根),然後意識到我不太瞭解你的數據模型。你可以展示一個操作,你在執行時遇到問題嗎? –

+1

只要你保持合理的數字,擁有多個聽衆並不是問題。什麼是合理的取決於你的應用程序,但一般來說:只聽取屏幕上顯示的數據。另見http://stackoverflow.com/q/37635733/,http://stackoverflow.com/q/24558317/ –

+0

@FrankvanPuffelen我還沒有開始轉換,但我的代碼仍然在做原始的東西:在ref'folder/uid1',我只是在探索如何在不同的用戶之間共享數據。謝謝您的回答。 – nlgn

回答

0

利用您當前的數據結構,您可以安全訪問文件夾。每個用戶現在只能訪問他們擁有的或他們已被授予訪問權限的文件夾。

問題似乎是您無法列表用戶有權訪問的文件夾。

像往常一樣,當使用Firebase(以及大多數其他NoSQL存儲系統)時,解決方案是將您需要的數據添加到模型中。在你的情況下,這意味着你爲每個用戶添加一個文件夾列表: