Запрос базы данных firebase для вложенных детей - PullRequest
0 голосов
/ 18 октября 2018

Моя база данных firebase настроена так:

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

Что я хочу сделать, так это перейти к каждому сообщению и эффективно проверить, прочитал ли пользователь («у меня уже есть идентификатор пользователя») сообщение..

Я пытался делать запросы, но у меня это не сработало ... Было бы здорово, если бы кто-то мог мне помочь.Спасибо!

1 Ответ

0 голосов
/ 19 октября 2018

Сначала вам нужно получить доступ 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
                                 }
                            }
                       }
                }
          }
     }
})
...