Я собираюсь представить этот ответ, который конкретно отвечает на вопрос
Как бы я мог получить все, что хранится в «1», запросив Firebase?
Ответ;если вы знаете путь к нужным данным, вам не нужно запрашивать.
func readSite() {
let site1Ref = self.ref.child("Site_List").child("1")
site1Ref.observeSingleEvent(of: .value, with: { snapshot in
let address = snapshot.childSnapshot(forPath: "address").value as? String ?? "No address"
let name = snapshot.childSnapshot(forPath: "siteName").value as? String ?? "No site name"
print(address, name)
})
}
, и результат будет
test1 Test1
При этом, если вы на самом деле хотите запросить, вам нужно знать, что вы хотите запросить.Предположим, например, что вы хотите запросить все адреса, имеющие значение test1
func querySite() {
let sitesRef = self.ref.child("Site_List")
let queryRef = sitesRef.queryOrdered(byChild: "address").queryEqual(toValue: "test1")
queryRef.observeSingleEvent(of: .value, with: { snapshot in
for snap in snapshot.children.allObjects as! [DataSnapshot] {
let address = snap.childSnapshot(forPath: "address").value as? String ?? "No address"
let name = snap.childSnapshot(forPath: "siteName").value as? String ?? "No site name"
print(address, name)
}
})
}
, и результат будет
test1 Test1
Если их было больше, чемодин результат, они все будут напечатаны.
Для этого запроса я использую .value, который может возвращать более одного дочернего результата моментального снимка в моментальном снимке, поэтому снимок должен быть повторен для обработки каждого дочернего объекта, который былвернулось.
Обратите внимание, что в моем ответе код self.ref.
указывает на корень my Firebase, вы должны указать, чтобы он указывал на любой родительский узел, который вы используете.