2017-10-13 80 views

回答

1

您將多種數據類型嵌套在單個根下,這是大多數Firebase實時數據庫開發人員推薦的。其中一些最重要的原因是:

  1. Firebase將始終讀取整個節點,因此如果沒有閱讀所有對話,則無法讀取用戶的屬性。有很多情況下這是浪費的,比如你只想顯示用戶名列表。
  2. 一旦授予用戶對節點的讀取訪問權限,他們就可以訪問該節點下的所有數據。您無法在較低的級別上獲得此許可。這意味着在你的情況下,任何人都可以閱讀用戶的個人資料信息,也可以閱讀他們的所有對話。這可能不是你想要的。
  3. 您可以嘗試解決這最後一個問題,通過給予用戶對用戶的特定屬性的讀取權限,例如/Users/$uid/name等,這樣他們可以讀取名稱,但不能讀取對話。在個人用戶節點上,這確實會起作用。但是由於您沒有/Users的讀取權限,因此您無法再獲取用戶配置文件列表。

來模擬你分享內容的常用方法是分裂的談話和用戶配置文件到單獨的頂級節點,每個鍵上的用戶的UID:

Users 
    $uid 
    name: "Matias Celiz" 
    gender: "..." 
Conversations 
    $uid 
    ... 

如果你想獨立的公衆形象信息和私人資料信息,添加另一個頂級節點來分割兩者:

Users 
    $uid 
    name: "Matias Celiz" 
    gender: "..." 
Profiles 
    $uid 
    name: "Matias Celiz" 
Conversations 
    $uid 
    ...