对Firebase查询实现感到困惑

时间:2016-12-14 09:07:03

标签: ios swift firebase firebase-realtime-database

我是firebase的新手,我需要帮助。我的数据库中有两个节点:用户和帖子,如下所示:

users
    uid
      name: "William"
      post:
          KUhyPi5xLZBGyp-_X-W: true
         -KWH8EVxohgNBfHuKoYy: true

posts
    KUhyPi5xLZBGyp-_X-W     
                 comment: "I love this"
   -KWH8EVxohgNBfHuKoYy     
                 comment: "Coding is fun"

目前我可以在tableView中显示所有帖子。但我希望能够像在facebook中一样显示发布帖子的用户的姓名。请告诉我如何检索谁在该索引路径上发布特定帖子的用户名,以便将其显示在tableViewcell的标签中

以下是我用于显示当前tableview中所有帖子的代码

  DataService.ds.REF_POST.observe(
        .value, with: { (snapshot) in
            if let snapshot = snapshot.children.allObjects as? [FIRDataSnapshot]{
                for snap in snapshot{
                    print("SNAP: \(snap)")
                    if let postDict = snap.value as? Dictionary<String, AnyObject>{

                        let key = snap.key
                        let post = Post(postKey: key, postData: postDict)
                        self.posts.append(post)
                    }
                }
            }
            self.tableView.reloadData()
    })

}

1 个答案:

答案 0 :(得分:3)

保存评论时,请将uid与其一起存储,以便以后轻松查询。

{
    "posts" : {
        "KUhyPi5xLZBGyp-_X-W": {
            "uid": "USER_ID",
            "comment": "I love this"
        }
        "-KWH8EVxohgNBfHuKoYy": {
            "uid": "USER_ID",
            "comment": "Coding is fun"
        }
    }
}

我意识到这看起来像复制您的数据,但这是他们建议您存储数据的方式,以便您可以轻松/快速地查询它。例如,一旦获得所有yoru评论,您就会收集所有用户ID并获取这些个人用户。没有办法在一个查询中完成所有操作。