2017-09-19 5 views
2

にある部屋のリストを取得し、私はチャットアプリのfirebaseデータベースを構築する方法についての良い記事を読んでいると私は、この構造でアプリを終了:Firebaseスウィフトメンバーが

{ 
    "users":{ 
    "autoIdUser1":{ 
     "username":"john", 
     "full_name":"John Vincent", 
     "groups":{ 
      "autoIdGroup1":true, 
      "autoIdGroup2":true 
     } 
    }, 
    "autoIdUser2": ..., 
    "autoIdUser3": ... 
    } 
    "groups": { 
    "autoIdGroup1"{ 
     "group_name":"Administrators", 
     "group_description":"Users who can do anything!", 
     "members":{ 
      "autoIdUser1":true, 
      "autoIdUser2":true 
     } 
     }, 
    "autoIdGroup2"{ 
     "group_name":"Moderators", 
     "group_description":"Users who can only moderate!", 
     "members":{ 
      "autoIdUser1":true 
     } 
     } 
    } 
} 

は、今私が持っていますメンバーがいるすべての部屋から検索する

私がしようとしたのは、各グループ内に特定のユーザーIDがメンバーの下にあるかどうかを確認することですが、どのようにして...

私はこのようにdbで別の構造を作成する別の方法についても感謝しています:

"membersInGroups":{ 

    "autoIdGroup1":{ 
      "autoIdMember1":true, 
      "autoIdMember3":true 
     } 
    "autoIdGroup2":{ 
      "autoIdMember1":true 
     } 
    } 

ユーザーが所属するすべてのグループIDを取得し、各グループのすべての情報を再度照会するクエリを作成します。 クエリのスタイルは、古い構造で作る必要があるものと同じですが、よりシンプルです

どちらの方法が最適ですか?

2番目の構造を追加すると、「メンバー」子ノードを削除できますか?

既存の構造のクエリの例は表示できますか?

答えて

3

できるだけデータをストリームとして構造化するようにしてください。これは、データの長いリストを意味します。あなたのニーズに必要以上には入れ子にしないでください。

また、ユーザー名、ユーザーID、オブジェクトタイトルなどのデータを複製することを心配しないでください。データ構造をUIに合わせてください。

関連する問題