ios - query - recuperar datos firebase web
¿Cómo recorro y obtengo todas las claves de los nodos anidados en firebase? (3)
En Android
Da acceso a todos los hijos inmediatos de esta instantánea. Puede ser utilizado en loops nativos para:
for (DataSnapshot child : parent.getChildren()) {
//Here you can access the child.getKey()
}
En iOS
Swift 3:
for (child in snapshot.children) {
//Here you can access child.key
}
Swift 4:
snapshot.children.forEach({ (child) in
<#code#>
})
En la web
snapshot.forEach(function(childSnapshot) {
//Here you can access childSnapshot.key
});
Puede ponerlo en una lista diferente o en la misma ruta, lo importante es tener en cuenta la cantidad de datos que está recuperando realmente al convocar un evento. Y cómo va a consultar esa información ... es por eso que se recomienda en NoSQL mantener nodos planos
Estoy intentando obtener las claves de los nodos anidados en Firebase y no estoy seguro de cómo hacerlo.
Por ejemplo en este caso:
¿Cómo sé que 2,3,4 existe dentro de 1?
Estoy pensando en poner valores en una lista por separado en firebase. ¿Pero hay una manera más inteligente de hacer esto? ¿Hay una manera más eficiente de obtener las claves de todos los nodos anidados en Firebase?
Necesita trabajar con matrices de diccionarios. Iterate a través de cada uno de los diccionarios, entonces debes verificar si la clave está presente o no. Porque en Firebase necesitamos enviar claves específicas al servidor.
RÁPIDO
let key = "1"
for child in snapshot.children {
if let snap = child.childSnapshotForPath(key){
print("Able retrieve value : /(snap) for key : /(key)")
} else {
print("Unable to retrieve value for key : /(key)")
}
}
C OBJETIVO
NSString *key = @"1";
for (NSDictionary *dic in array) {
NSArray *keys = [dic allKeys];
if ([keys containsObject:key]){
}
}
Encontré una manera de iterar sobre json anidado cuya clave es aleatoria.
var ref = FIRDatabase.database().reference(withPath: "timinig")
ref.observeSingleEvent(of: .value, with: { snapshot in
print(snapshot.childrenCount) // I got the expected number of items
let enumerator = snapshot.children
while let rest = enumerator.nextObject() as? FIRDataSnapshot {
print("-")
print(rest.key)
let newobj=rest.children
while let rest1 = newobj.nextObject() as? FIRDataSnapshot {
print(rest1.key)
}
print("-")
}