Estaba creando una aplicación y tenía que obtener datos de Realtime Database. Estoy obteniendo los datos en snapshot.val() así
►{xz0ezxzrpkb:{…}} ▼xz0ezxzrpkb:{blood_group:"B+",cause:"Random Cause",created_on:"08-02-2022",email:"example@gmail.com",location:"Random Location",message:"Random Message",name:"Any_Name",phone_number:"+91 *********"}
Y ahora quiero acceder a estos datos. Cuando intento snapshot.val()[0].email y
snapshot.val().[0].email que estoy recibiendo
undefined (2)
Entonces, estoy trabajando en React Native y este es el código.
db.ref('/requests/').on('value', (snapshot) => { console.log(snapshot.val()) console.log(snapshot.val()[0].email) console.log(snapshot.val().[0].email) });
Los nodos de la base de datos son los siguientes:
Por favor, ayúdame.
El valor de la instantánea no es un objeto. Intente refactorizar el código usando Object.keys()
como se muestra a continuación:
db.ref('/requests/').on('value', (snapshot) => { Object.keys(snapshot.val()).forEach((key) => { const request = snapshot.val()[key]; console.log(key, request.email) }) });
Si bien el enfoque en la respuesta de Dharmaraj funciona, recomiendo usar la operación forEach
integrada de Firebase, ya que eso garantiza que procese los resultados en el mismo orden en que la base de datos los devuelve:
db.ref('/requests/').on('value', (snapshot) => { snapshot.forEach((childSnapshot) => { console.log(childSnapshot.key) // "xz0ezxzrpkb" console.log(childSnapshot.val()) // {blood_group:"B+",cause:"Random Cause", ... console.log(childSnapshot.val().email) // "example@gmail.com" console.log(childSnapshot.child('email').val()) // "example@gmail.com" }) })