查询Firebase数据库的嵌套子级

时间:2018-10-18 19:13:50

标签: swift firebase firebase-realtime-database swift3 swift4

我的firebase数据库配置如下:

{ "Posts": {
    "randomPostKey": {
      usersThatReadThisPost: {
       "randomUser":"000001",
         "anotherRandomUser":"000002"
         }
     },
     "anotherRandomPostKey": {
       usersThatReadThisPost: {
         "randomUser":"randomUserKey",
         "anotherRandomUser":"anotherRandomUserKey"
       }
    }
  }
}

我想做的是进入每个帖子,并有效地检查用户(“我已经有用户的ID”)是否已阅读该帖子。

我已经尝试过查询,但是对我来说确实不起作用... 如果有人可以帮助我,那就太好了。谢谢!

1 个答案:

答案 0 :(得分:0)

首先,您需要访问Posts

private let postsRef = FIRDatabase.database().reference(withPath: "Posts")

然后您获得所有帖子并在帖子中找到用户

postsRef.observeSingleEvent(of: .value, with: { (snapshot) in
    for child in snapshot.children {
          if let postSnapshot = child as? FIRDataSnapshot {
                if let post = postSnapshot.value as? [String: Any], let usersThatReadPost = post["usersThatReadThisPost"] as? [[String: Any]] {
                       for user in userThatReadPost {
                            let values = user.values
                            for value in values  {
                               if let userId = value as? String, userId == userIdThatYouOwn {
                                 // user has read this
                                 break
                                 }
                            }
                       }
                }
          }
     }
})