Estoy tratando de mostrar datos de un documento dentro de una colección entre "estudiantes" y sus "cursos"
Estoy usando html, javascript y esta estructura, pero a partir de ahora solo puedo recuperar la ID del documento, pero también me gustaría acceder a los datos dentro de este documento.
async function fetchCourses() { const studentId = firebase.auth().currentUser.uid const courseIds = await db.collection(`students/${studentId}/attending`).get(); const courseDocs = await Promise.all( courseIds.docs.map(doc => db.doc(`courses/${doc.id},${studentId}`).get()) ); return courseDocs.filter(doc => doc.exists).map(doc => ({ id: doc.id, ...doc.data() }), console.log(courseDocs)); }
Mi console.log muestra todo esto:
Cualquier ayuda se agradece con gusto
Editar
Esta es la estructura de datos dentro de mi Firebase:
Los estudiantes se almacenan en una colección indexada por su ID de usuario y cada documento de estudiante contiene su nombre y más datos, pero lo más importante es una subcolección denominada asistencia que contiene documentos vacíos indexados por ID de curso, que hacen referencia a un documento en la colección de cursos.
Los cursos se almacenan en otra colección indexada por el ID del curso y, como en los estudiantes , cada documento del curso contiene un título y más datos, y una subcolección llamada asistentes que contiene documentos vacíos indexados por uid, que se refieren a un estudiante.
import { doc, getDoc } from "firebase/firestore"; const docRef = doc(db, "cities", "SF"); const docSnap = await getDoc(docRef); if (docSnap.exists()) { console.log("Document data:", docSnap.data()); } else { // doc.data() will be undefined in this case console.log("No such document!"); }
arriba hay un ejemplo de documentos de firestore. firestore tiene una sintaxis muy específica. solo puede acceder a los datos de la solicitud con la sintaxis doc.data(). Todos los demás intentos no traerán nada o algún objeto irrelevante (al menos en mi experiencia)