Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

410
Vistas
¿Cómo obtener una Subcolección dentro de una Colección en Firestore Web Versión 9 (Modular)?

Estaba usando el modo de encadenamiento de Firestore Web 8, pero estoy en camino de actualizarlo al Módulo 9 y ha sido difícil tratar de descubrir cómo obtener todo el contenido de mi subcolección (colección dentro de mi colección) .
Mi función anterior es así y funciona bien:

 function getInfo(doc_name) { let infoDB = db .collection("collection_name") .doc(doc_name) .collection("subcollection_name") .get(); return alunoHistorico; }

así que con la forma del módulo probé este código

 // Initialize Firebase const app = initializeApp(firebaseConfig); const db = getFirestore(app); const docRef = doc(db, "collection_name", "doc_name"); 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!"); }

pero la función doc () espera argumentos pares (sin contar el argumento db), por lo que si trato de usar con 3 argumentos como este, aparece un error:

 const docRef = doc(db, "collection_name", "doc_name", "subcollection_name");

para que funcione tengo que pasar el documento exacto que esta dentro de la subcolección

 const docRef = doc(db, "collection_name", "doc_name", "subcollection_name", "sub_doc");

pero no me funciona porque tengo una lista de documentos dentro de la subcolección que quiero recuperar. Entonces, ¿cómo puedo obtener todos mis documentos dentro de mi subcolección?

Gracias a cualquiera que se tome el tiempo.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

Debe usar collection() para obtener una CollectionReference en lugar de doc() que devuelve una DocumentReference :

 const subColRef = collection(db, "collection_name", "doc_name", "subcollection_name"); // odd number of path segments to get a CollectionReference // equivalent to: // .collection("collection_name/doc_name/subcollection_name") in v8 // use getDocs() instead of getDoc() to fetch the collection const qSnap = getDocs(subColRef) console.log(qSnap.docs.map(d => ({id: d.id, ...d.data()})))

Escribí una respuesta detallada sobre la diferencia entre doc() y collection() (en V8 y V9 ) aquí:

Firestore: ¿Cuál es el patrón para agregar nuevos datos en Web v9?

about 4 years ago · Juan Pablo Isaza Denunciar

0

Si alguien quiere obtener actualizaciones en tiempo real de documentos dentro de la subcolección usando onSnapshot en Modular Firebase V9, puede lograr esto como:

 import { db } from "./firebase"; import { onSnapshot, collection } from "@firebase/firestore"; let collectionRef = collection(db, "main_collection_id", "doc_id", "sub_collection_id"); onSnapshot(collectionRef, (querySnapshot) => { querySnapshot.forEach((doc) => { console.log("Id: ", doc.id, "Data: ", doc.data()); }); });
about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda