Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

396
Views
¿Cómo migrar documentos en Firestore?

Necesito obtener una serie de documentos de una colección y migrar estos documentos a otra colección.

Así que creo una consulta para obtener todos los documentos de la primera colección:

 const orderQuery = db.collection("FIRST_COLLECTION").where("status", "==", "ACTIVE").get(); const orders: Order[] = mapToObject<Order>(orderQuery); //here I map query from firestore to objects

e iterar sobre esta matriz y add a otra colección:

 const secondCollectionQuery = db.collection("SECOND_COLLECTION").doc("ID").collection("THIRD_COLLECTION"); for await (const order from orders) { secondCollectionQuery.add(order); }

¿Hay una mejor manera de migrar documentos de una colección a otra con firebase? ¡Gracias por cualquier ayuda!

PD. También quiero eliminar el documento de la colección cuando se migre a otra colección, no quiero tener un duplicado

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

¿Existe una forma mejor de migrar documentos de una colección a otra con Firestore? PD. También quiero eliminar el documento de la colección.

La única forma de mover un documento de una colección a otra colección es la forma que ha descrito en su pregunta, es decir, imitando un "copiar y pegar" con la siguiente secuencia:

Cree una copia del documento de origen en la colección de destino, es decir, léalo de la colección de origen, obtenga los campos del documento y cree un nuevo documento en la colección de destino con estos campos.

Si desea hacer un " cortar y pegar" (también eliminando los documentos de la colección de origen), deberá eliminar estos documentos de la colección de origen después de haber completado la secuencia de copiar/pegar.


Tenga en cuenta que Firestore ofrece la posibilidad de exportar e importar documentos utilizando el servicio de exportación e importación administrado y Cloud Storage , pero no puede exportar documentos de una colección e importarlos en otra colección.

about 4 years ago · Juan Pablo Isaza Report

0

Puede insertar esos add() en una matriz y luego usar Promise.all() para ejecutarlos juntos (o usar escrituras por lotes y migrarlos en lotes de 500). Además, la promesa devuelta por la primera consulta no parece manejarse correctamente. Intente ejecutar la siguiente función asíncrona.

 async function migrateDocs() { const oldColRef = db.collection("FIRST_COLLECTION") const newColRef = db.collection("SECOND_COLLECTION") const orderQuery = await oldColRef.where("status", "==", "ACTIVE").limit(500).get(); const addBatch = db.batch(); const delBatch = db.batch(); orderQuery.docs.forEach(doc => { addBatch.set(newColRef.doc(doc.id), doc.data()) delBatch.delete(oldColRef.doc(doc.id)) }) // add docs in new collection await addBatch.commit(); // remove same docs from old collection await delbatch.commit(); console.log("500 docs migrated") }

Dado que una escritura por lotes puede contener solo 500 operaciones, tenemos ese .limit(500) , por lo que solo recuperamos 500 documentos. También puede leer todos los documentos y luego crear lotes de 500 (para que no tenga que ejecutar lo mismo una y otra vez manualmente) como se muestra arriba o ejecutar todas las promesas individualmente (preferiría escrituras por lotes).

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!