0

Google Firebase IonicアプリにAngularFireを使用しようとしています。私は、特に私のデータベースの設計とその後の実装に関する問題に直面しています。Firebase(AngularFire)を使用したユーザーとフレンズの設計と実装

私の目標は、ユーザーに名前や電子メールなどの基本情報を持たせることです。

すべてのユーザーは友だちを追加できます。これらの友人はリストに格納されます。 Firebaseデータベースでこれを行う最善の方法は何ですか?ユーザーが他のユーザーIDを指し示すフレンドリストノードを持つべきか?

例:

User 
    User1 
     Name 
     Email 
     Friends 
      Friend1 
      Friend2 

または2つのユーザー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

関連する問題