我想从多个子节点获取数据?我能够从第一个子节点获取,但是无法获取下一个子节点级别。我只需要firebase中的帐户部分
我使用此功能来获取第一个子节点。
func compareAccount() {
REF_DRIVERS.observeSingleEvent(of: .value) { (snapshot) in
print(snapshot)
}
}
Snap (drivers) {
9AyIYcizavM03ArvmQH1e3xQ7rD3 = {
account = Default;
driverIsOnTrip = 0;
isPickupModeEnabled = 0;
provider = Firebase;
userIsDriver = 1;
};
FCuTwkhtrbdBTx7akQI4NL49K5p1 = {
account = Default;
coordinate = {
0 = "37.33233141";
1 = "-122.0312186";
};
driverIsOnTrip = 0;
isPickupModeEnabled = 0;
provider = Firebase;
userIsDriver = 1;
};
ML2Sxz6l78ZIZ0mO327nGmh0YkP2 = {
account = Default;
driverIsOnTrip = 0;
isPickupModeEnabled = 0;
provider = Firebase;
userIsDriver = 1;
};
}
func compareAccount() {
REF_DRIVERS.child("account").observeSingleEvent(of: .value) { (snapshot) in
print(snapshot)
}
}
当我尝试仅打印帐户时。 它会打印此结果
管理(帐户)
答案 0 :(得分:1)
当您侦听节点时,您将获得包含该节点所有数据的快照。如果该快照包含您不知道其密钥的子代(本例中为驱动程序ID),则可以遍历所有child nodes。如果您确实知道子节点的键(例如account
属性),则可以使用childSnapshot(forPath:)
来获取该节点。
因此,通过组合这些,您可以遍历驱动程序并按名称查找其属性:
REF_DRIVERS.observeSingleEvent(of: .value) { (snapshot) in
for case let driverSnapshot as DataSnapshot in snapshot.children {
print(driverSnapshot.key)
print(driverSnapshot.childSnapshot(forPath:"account").value)
}
}