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

317
Vistas
How to add a collection of documents to a newly created document in firebase?

I have built a messaging app using react and firebase. When a user creates a new group chat, a new document a new chat id (made randomly by Firebase) is created, with the date that the chat was created. The participants of the group chat are added to a new 'participants' collection which is added to the new chat document afterwards. Here is my code:

   db.collection('chats').add({ //add generates new chat document and id
            created: firebase.firestore.FieldValue.serverTimestamp() // when new chat was created
        })
            .then((docRef) => { //docRef.id contains newly created chat Id
                console.log("docRef is" + docRef.id) // this works, and new chatId is created
                    db.collection("chats")
                    .doc(docRef.id) //this isn't working, firebase is creating a new document with new random id, instead of using the docRef.id created above which represents the new chat.
                    .collection("participants")
                    .doc(auth.currentUser.id)
                    .set(currentUser)
                   
                    db.collection("chats")
                    .doc(docRef.id) //not working
                    .collection("participants")
                    .doc(user.id)
                    .set(otherUser)

...

docRef.id works and is returned correctly as shown by the console.log. However, when I try to reference it in the following statements it doesn't work and Firebase creates a brand new document, instead of adding to the one I want.

Not sure what I'm doing wrong! Thanks.

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

0

The code looks fine to me. Are you sure the same function isn't running again which is creating new chats? Also you are not awaiting those promises returned by set(). Try refactoring to this:

db.collection('chats').add({
  created: firebase.firestore.FieldValue.serverTimestamp()
}).then(async (docRef) => {
  // async ^^

  const newChatId = docRef.id
  console.log("New chat ID:" + newChatId)

  const newChatRef = db.collection("chats").doc(docRef.id)

  await newChatRef.collection("participants").doc(auth.currentUser.id).set(currentUser)
  await newChatRef.collection("participants").doc(user.id).set(otherUser)
})

Addionally, if you are adding multiple documents once, try using Batched Writes so they all are either added or not if any one of them fails.

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