Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

408
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda