Estoy tratando de obtener datos de Firebase en React. Mis datos están estructurados así:
Mi código actualmente se ve así:
fire.database().ref(outputClassName).once("value", snapshot => { let classStudents = []; snapshot.forEach(snapsh => { //classStudents.push(snapsh.val()); let student = ""; student = snapsh.val(); alert(student); fire.database().ref(outputClassName).child(student).once("value", snapsho => { let studentSubjects = []; snapsho.forEach(snaps => { //studentSubjects.push(snaps.val()); fire.database().ref(outputClassName).child(student).child(snaps.val()).once("value", snapsh => { let subjectNotes = []; snapsh.forEach(snap => { subjectNotes.push(snap.val()); }); studentSubjects.push(subjectNotes); }); }); classStudents.push(studentSubjects); }); }); setRenderData(classStudents); });Recibo un error para este código. ¿Puede alguien ayudarme con una solución que funcione?
Debe usar .once() en lugar de .on() cuando los datos deben obtenerse solo una vez. Además, cuando obtenga datos en la ruta /10 A , obtendrá el nodo completo para que no tenga que volver a solicitar los datos de todos los estudiantes de esa clase.
function outputData() { fire.database().ref(outputClassName).once("value").then((snapshot) => { const classData = snapshot.val() const students = Object.keys(classData) students.forEach((student, i) => { const subjects = Object.keys(classData[student]) console.log(`${i+1} Name: ${student}`) console.log(`Subjects: ${JSON.stringify(subjects)}`) console.log("===") // render the data to HTML as per needs }) }) }