Estoy tratando de leer los datos de la base de datos de firebase y mostrar lo mismo en una página web.
La estructura de mi base de datos es la siguiente:
Si ve la imagen, puedo leer los " UserData " usando el siguiente código:
firebase.initializeApp(config); var database = firebase.database(); var ref = database.ref('UserData'); ref.once('value', gotData1, errData); function gotData1(data){ //console.log(data.val()); var usrData = data.val(); var keys = Object.keys(usrData); //console.log(keys); for (var i = 0; i< keys.length; i++){ var k = keys[i]; var id = usrData[k].AssignedID; var name = usrData[k].Name; $(document).ready(function() { var $formrow = '<tr><td>'+id+'</td><td>'+name+'</td></tr>'; $('#userInfo').append($formrow); }); } }En la parte resaltada de la imagen, puede ver claves con valores 196214, 196215, 196216
Ahora, necesito obtener los valores de "Uno, Contar" haciendo coincidir los valores clave con el ID asignado disponible.
¿Cómo puedo lograr lo mismo?
Actualizar, JSON como texto -
{ "app_url" : "https://app_name?ls=1&mt=8", "UserData" : { "HNpTPoCiAYMZEeVOs01ncfGBj6X2" : { "Name" : "Arunima Vj" "Email" : "asd@upp.com", "AssignedID" : 196214 }, "VXU2tdGdzZX90PJa9mpEL3zAiZo2" : { "Name" : "Lakshman Medicherla" "Email" : "asd@upp.com", "AssignedID" : 196215 }, "dFlwtqDNrja2RkOySVtW106IQP62" : { "Name" : "Prashanth Sripathi" "Email" : "asd@upp.com", "AssignedID" : 196216 } } "teams" : { "196214" : { "1105" : { "One" : 7619, "count" : 24 }, "1379" : { "Two" : 7145, "count" : 21 } }, "196215" : { "1111" : { "One" : 7779, "count" : 20 }, "1508" : { "Two" : 1176, "count" : 21 } }, "196216" : { "1106" : { "One" : 7845, "count" : 22 }, "1509" : { "Two" : 1156, "count" : 26 } } } }Su estructura de datos está bastante anidada, lo que hace que el código sea más difícil de leer. Pero esto navega la estructura genéricamente en el código mínimo que pude encontrar:
var ref = firebase.database().ref("/42824688"); ref.child("UserData").once('value', gotUserData); function gotUserData(snapshot){ snapshot.forEach(userSnapshot => { var k = userSnapshot.key; var id = userSnapshot.val().AssignedID; var name = userSnapshot.val().Name; ref.child("teams").child(id).once("value", teamsSnapshot => { teamsSnapshot.forEach(teamSnapshot => { var teamKey = teamSnapshot.key; teamSnapshot.forEach(teamProp => { var prop = teamProp.key; var val = teamProp.val(); console.log(k+" "+name+" "+id+": "+teamKey+", "+prop+"="+val); }); }); }); }) } Entonces, para cada usuario, esto carga los datos de los equipos para ese usuario y luego recorre la teamsSnapshot de equipos para obtener cada teamSnapshot de equipo y luego recorre eso para obtener cada propiedad de equipo.
Jsbin de trabajo: http://jsbin.com/noziri/edit?html,js,console
asd@upp.com"