EmilianoJune 3, 2024

Cómo añadir o eliminar campos en los documentos de una colección en Firestore

Obtener la Referencia de Firestore

Para comenzar, necesitas importar los módulos necesarios y tener acceso a tu base de datos Firestore:

import { getFirestore, collection, getDocs, writeBatch, doc, deleteField } from "firebase/firestore";

const firestore = getFirestore();

Crear un Batch

Un batch permite agrupar múltiples operaciones de escritura, como actualizaciones o eliminaciones, en una sola solicitud.
Esto asegura que todas las operaciones se realicen de forma atómica, lo que significa que todas las modificaciones dentro del batch se aplican de manera simultánea y completa.

Si alguna de las operaciones falla, todas las operaciones en el batch se revierten, garantizando que la base de datos no quede en un estado inconsistente.

const batch = writeBatch(firestore);

Recuperar Todos los Documentos de la Colección

Para modificar todos los documentos dentro de una colección, primero debes obtenerlos:

const postsSnapshot = await getDocs(collection(firestore, "posts"));

Iterar Sobre los Documentos para Actualizar y/o Eliminar Campos

Con los documentos en mano, puedes iterar sobre cada uno de ellos para actualizar o eliminar los campos necesarios.
Aquí se muestra cómo agregar un campo llamado nuevoCampo y cómo eliminar un campo llamado antiguoCampo:

postsSnapshot.forEach((docSnapshot) => {
  const docRef = docSnapshot.ref;

  batch.update(docRef, {
    nuevoCampo: [],  // Agregar un nuevo campo
    antiguoCampo: deleteField(), // Eliminar un campo existente
  });
});

Aplicar las Actualizaciones y Eliminaciones

Finalmente, después de preparar todas las modificaciones, es momento de aplicarlas usando batch.commit():

await batch.commit();

Este método asegura que todas las actualizaciones y eliminaciones se ejecuten de manera eficiente y sin errores.