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

587
Vistas
¿Cómo copiamos datos de una colección a otra en firestore?

Estoy tratando de copiar datos de una colección a otra colección, no estoy seguro de lo que estoy haciendo bien o mal. Estoy tratando de copiar todo lo que está en "todo" con una fecha igual a 2021-08-14 y copiarlo en "plantilla". hasta ahora, todo lo que puedo hacer es obtener los datos de todo e imprimirlos en la consola

 const db = firebase.firestore(); const todoRefFrom = db.collection('todo'); const todoRefTo = db.collection('templates'); const todos = await todoRefFrom.get(); todos.forEach(async doc => { console.log('set set', doc); todoRefTo.set(Map.fromEntries(doc.data().entries)); });
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Simplemente consulte la colección de tareas todo para los documentos que tengan fecha de inicio el 14 de agosto. Luego simplemente guarde todos los documentos en su nueva colección, en lotes, lo cual es una mejor manera de rendimiento.

 const db = firebase.firestore(); const todoRefFrom = db.collection('todo'); const todoRefTo = db.collection('templates'); let startDate = new Date('2021-08-14'); let endDate = new Date('2021-08-15'); const todos = await todoRefFrom.where('dateField', '>=', startDate).where('dateField', '<', endDate).get(); let writeBatch = firebaseAdmin.firestore().batch(); let i = 0; for (let doc of todos.docs) { writeBatch.set(todoRefTo.doc(doc.id), doc.data()); i++; if (i > 400) { // write batch only allows maximum 500 writes per batch i = 0; console.log('Intermediate committing of batch operation'); await writeBatch.commit(); writeBatch = firebaseAdmin.firestore().batch(); } if (i > 0) { console.log('Firebase batch operation completed. Doing final committing of batch operation.'); await writeBatch.commit(); } else { console.log('Firebase batch operation completed.'); } });

Inspirado en la respuesta de @Lahiru Chandima aquí, https://stackoverflow.com/a/60137639/3857918

PD: he reemplazado su forEach con simple for..of bucle aquí. Las llamadas asincrónicas forEach no se ejecutan en una secuencia, a veces pueden causar muchos problemas durante la depuración.

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