Firebase Swift获取会员所在的房间列表

时间:2017-09-19 22:11:35

标签: swift firebase chat members

我已经阅读了一篇关于如何为聊天应用程序构建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,并使用它们再次查询每个组的所有信息。 查询的风格与旧结构的查询风格相同,但更简单

哪种方法最好?

如果我添加第二个结构,我可以删除“members”子节点吗?

我能看到现有结构的查询示例吗?

1 个答案:

答案 0 :(得分:3)

确保尽可能将数据结构化为流,这意味着长而浅的数据列表。不要嵌套超出您需要的必要。

此外,不要害怕复制用户名,用户ID,对象标题等数据。尝试将您的数据结构与您的UI相匹配。