Swift Firebase -Как получить все k / v при использовании queryOrdered (byChild:) .queryEqual (toValue:) - PullRequest
0 голосов
/ 24 марта 2019
root
  |
  @--reviews
        |
        |
        @--postABC // postId
               |
               |
               @--reviewXYZ // ***I want everything under this reviewUID
               |    |
               |    |--buyerUID: "01010"
               |    |--text: "fast shipping!"
               |    |
               |    @--responseTUV // responseUID
               |         |
               |         |--sellerUID: "212555"
               |         |--text: "we aim to please"
               |     
               @--reviewEFG // this review is from a totally different user I don't want anything from here

Моя база данных настроена, как указано выше. Иногда у меня есть только идентификатор покупателя, поэтому для извлечения данных, которые я использую .queryOrdered(byChild: "buyerUID").queryEqual(toValue: "01010"), я могу найти покупателя по этому конкретному сообщению и его просмотру.

Как я могу получить все другие к / v, связанные с покупателем в этом узле (reviewXYZ), как только я их обнаружу?

let reviewsRef = Database.database().reference()?
                   .child("reviews")
                   .child("postABC")
                   .queryOrdered(byChild: "buyerUID")
                   .queryEqual(toValue: "01010")

reviewsRef?.observeSingleEvent(of: .value, with: { [weak self](snapshot) in

    print(snapshot.key) // prints  postABC
    print(snapshot.value) // prints a dictionary with reviewXYZ as the key and everything underneath it as a value

    guard let dict = snapshot.value as? [String: Any] else { return }
})

1 Ответ

1 голос
/ 24 марта 2019

Класс DataSnapshot имеет встроенные методы для циклического обхода своих дочерних элементов.

reviewsRef?.observeSingleEvent(of: .value, with: { [weak self](snapshot) in
  for child in snapshot.children {
    let snap = child as! DataSnapshot;
    print(snap.key)
    print(snap.value) 
    print(snap.childSnapshot(forPath: "buyerUID").value)
  }
})

Также см. Другие результаты поиска для циклического обхода дочерних узлов Firebase в Swift..

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...