0

Ich versuche AngularFire für meine Google Firebase Ionic App zu verwenden. Ich bin besonders mit Problemen beim Design meiner Datenbank und der anschließenden Implementierung konfrontiert.Benutzer & Freunde Design und Implementierung mit Firebase (AngularFire)

Mein Ziel ist es, Benutzer mit einigen grundlegenden Informationen wie Name und E-Mail zu haben.

Jeder Benutzer sollte Freunde hinzufügen können. Diese Freunde werden in einer Liste gespeichert. Was ist der beste Weg, dies in der Firebase-Datenbank zu tun? Sollten Benutzer einen Friendlist-Knoten haben, der auf andere Benutzer-IDs verweist?

Beispiel:

User 
    User1 
     Name 
     Email 
     Friends 
      Friend1 
      Friend2 

Oder sollte ein separater „Freundschaften“ Baum mit Knoten dort sein, die zwei Benutzer-IDs nehmen und sie deshalb verbinden? Beispiel:

Friendships 
    Friendship1 
     User1 
     User2 
    Friendship2 
     etc... 

Auch die erste Option I beschrieben, die ich so weit umgesetzt, ich abrufen meine Freunde die folgende Art und Weise:

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

    $scope.friends = $firebaseArray(friendsRef); 

Dies funktioniert gut. Das Problem wird, wie kann ich die Daten abrufen, die jedem Freund in seinem eigenen Datenbankbenutzerstandort zugeordnet sind, wie Name und E-Mail?

Ich hoffe, dass jemand mir einige Vorschläge geben kann, um mir auf dem Weg zu helfen, da ich versucht habe, dies jetzt für eine lange Zeit herauszufinden. Danke vielmals!

Antwort

0

Ich würde mit der ersten Option gehen. Aber mit der Verflachung der Daten.

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

so werden Sie nicht alle Daten (mit Freundesliste) abrufen, wenn Sie nach Benutzerdaten suchen.

Verwenden Sie die Methode update(), um Daten an mehreren Orten gleichzeitig zu speichern. Wenn jemand einen Freund eines Benutzers löschen möchte, können Sie update() beide Benutzer aus der jeweils anderen Liste entfernen.

Verwenden Sie security rules, um zu steuern, wer Daten sehen kann. Zum Beispiel eine user1 Daten sind sichtbar zu user1 oder diejenigen, die ihre userid in friendlist/user1/

haben
+0

Danke, das funktioniert super. Ja, ich wusste, dass ich einen direkten Weg brauchte, um bessere Leistungen zu verlangen, aber ich dachte nicht über diese Möglichkeit nach. Ich schätze es :) – Robin

+0

Ich versuche, dasselbe mit Java zu erreichen, nur neugierig, so hier Freundschaft enthält Array von Benutzerobjekten? Könnte dies zu aggressivem Datenbankwachstum und schlechter Praxis führen? Schätzen Sie, wenn Sie mir das klar machen könnten. – channae

Verwandte Themen