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

155
Visualizações
How to get reference data inside map of parent data in Firebase

I can't get this to work. Code is as follows and problem is res.data() doesn't show in de docs object.

getProjects = async () => {
    const colRef = db.collection('parentCollection').orderBy('createdAt', 'desc');
    const snapshots = await colRef.get();
    const docs = snapshots.docs.map((doc) => ({
      docId: doc.id,
      ...doc.data(),
      ...doc
        .data()
        .childId.get()
        .then((res) => res.data()),
    }));
    this.setState({
      list: docs,
    });
  };

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

I understand from the comment that the childId field is of type Reference. The following code, using Promise.all(), should do the trick (untested):

const colRef = db.collection('parentCollection').orderBy('createdAt', 'desc');
const snapshots = await colRef.get();

const promises = [];
snapshots.forEach(snapshot => {
    promises.push(db.doc(snapshot.data().childId).get())
})

const childrenSnapshots = await Promise.all(promises); // Returns an Array of Document Snaphots, in the same order than the parents

const docs = [];
snapshots.forEach((snapshot, index) => {
    docs.push({
        docId: snapshot.id,
        ...snapshot.data(),
        ...childrenSnapshots[index].data()
    });
}); 
about 4 years ago · Juan Pablo Isaza Relatório

0

This answer from here worked!

db.collection('parentCollection').get()
    .then(res => {
      vm.mainListItems = [];
      res.forEach(doc => {
        let newItem = doc.data();
        newItem.id = doc.id;
        if (newItem. childId) {
          newItem. childId.get()
          .then(res => { 
            newItem.userData = res.data() 
            vm.mainListItems.push(newItem);
          })
          .catch(err => console.error(err));
        } else {
          vm.mainListItems.push(newItem);  
        }

      });
    })
    .catch(err => { console.error(err) });
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