0

我正在嘗試爲我的Google Firebase Ionic應用使用AngularFire。我特別面臨着我的數據庫設計和後續實施的問題。用戶和朋友使用Firebase設計和實施(AngularFire)

我的目標是讓用戶擁有一些基本信息,如姓名和電子郵件。

每個用戶都應該可以添加好友。這些朋友存儲在一個列表中。在Firebase數據庫中進行此操作的最佳方式是什麼?用戶是否應該有一個指向其他用戶標識的好友列表節點?

例子:

User 
    User1 
     Name 
     Email 
     Friends 
      Friend1 
      Friend2 

還是應該有一個單獨的「友誼」樹與需要兩個用戶ID,所以連接它們的節點?例如:

Friendships 
    Friendship1 
     User1 
     User2 
    Friendship2 
     etc... 

此外,由於我所描述的第一選擇,這是我實現的,到目前爲止,我找回我的朋友的方式如下:

var friendsRef = firebase.database().ref('users/' + firebase.auth().currentUser.uid + '/friends'); 

    $scope.friends = $firebaseArray(friendsRef); 

這個偉大的工程。問題在於,如何檢索與自己的數據庫用戶位置中的每個朋友關聯的數據,如名稱和電子郵件?

我希望有人可以給我一些建議,幫助我一路走下去,因爲我一直試圖弄清楚很長一段時間。非常感謝!

回答

0

我會去第一個選項。但是數據變平了。

users 
    user1 
     name 
     email 
    user2 
    user3 
    friendlist 
    user1 
     user2 
     user5 
     user11 
    user2 
    user3 

這樣你就不會在查詢用戶數據時檢索整個數據(和好友列表)。使用update()方法一次將數據保存在多個位置。如果有人想要刪除某個用戶的朋友,則可以update()將兩個用戶從對方列表中刪除。

使用security rules來控制誰可以查看誰的數據。例如,一個user1的數據將可見user1或誰有他們的useridfriendlist/user1/

+0

謝謝,這很好。是的,我知道我需要一條直接的路徑來呼喚更好的表現,但沒有考慮到這種可能性。我很感激:) – Robin

+0

我試圖用Java實現相同,只是好奇所以這裏友誼包含用戶對象的數組?這是否會導致數據庫的激增和不良習慣?感謝您能否清除我。 – channae

相關問題