我正在使用具有Json结构的Firebase数据库来管理用户的评论。

 {
    "post-comments" : {
            "post-id-1" : {
              "comment-id-11" : {
                "author" : "user1",
                "text" : "Hello world",
                "uid" : "user-id-2"
              },....
 }


我想拉所有评论,但不包括当前用户的评论。

在SQL中,它将转换为:
从评论后选择*,其中id!=“ user-id-2”

我知道Firebase数据库没有提供一种基于值的存在来排除节点的方法(即:用户ID!= ...)。

因此,有其他解决方案可以解决此问题。要么通过更改数据库结构,要么通过在加载数据后处理数据源。

对于后者,我正在使用FirebaseTableViewDataSource。查询后有没有办法过滤数据?

非常感谢

最佳答案

第一种解决方案是通过.ChildAdded加载评论,并忽略具有当前user_id的评论

let commentsRef = self.myRootRef.childByAppendingPath("comments")

commentsRef.observeEventType(.ChildAdded, withBlock: { snapshot in

  let uid = snapshot.value["uid"] as! String
  if uid != current_uid {
    //do stuff
  }
})


您可以对此进行扩展,并通过.Value加载所有内容,并遍历代码中的子级。该方法将取决于您正在加载的节点数-.ChildAdded将降低内存使用量。

09-11 17:50
查看更多