Operaciones avanzadas de Firestore

Clase 19 de 32Curso de Firebase 5 para Web

Resumen

Domina operaciones claves de Firestore con ejemplos claros: inserciones con llave propia, escritura en lote con batch, actualización de campos con update, adición segura con merge: true, borrado selectivo con firebase.firestore.fieldValue.delete y consultas con get, where, orderBy y limit. Verás cómo combinar filtros con AND y dónde empiezan a exigir índices.

¿Cómo insertar y escribir documentos en Firestore?

Para empezar, se inicializa una clase PostDao que obtiene la instancia de Firestore y expone funciones específicas para insertar y consultar. Con esto, se controlan operaciones como usar una llave propia o delegar el identificador.

¿Cómo crear con llave propia?

  • Se asigna un identificador definido por ti al crear el documento.
  • Beneficio: control total sobre la clave y organización de la colección.
  • Resultado: la colección “post” contiene el documento con el ID propio y los datos insertados.

¿Cómo usar add para id automático?

  • Con add, Firestore genera el identificador del documento.
  • Práctico cuando el ID no importa y priorizas velocidad.
  • Al terminar, se imprime el ID generado y puedes ver el nuevo post creado.

¿Qué es una operación batch y cuándo usarla?

  • Batch permite ejecutar múltiples operaciones al mismo tiempo: set, update o delete.
  • Flujo: adjuntar operaciones con batch.set y confirmar con batch.commit.
  • Ventaja: mejora el performance al reducir viajes a la red y garantizar atomicidad del lote.
  • Ejemplo típico: insertar tres posts con diferentes identificadores y confirmar una sola vez.

¿Cómo agregar campos sin sobrescribir con merge: true?

  • Al usar set sin merge, reemplazas el documento completo.
  • Con merge: true, añades el nuevo campo y preservas los existentes.
  • Caso mostrado: agregar image link a un documento ya creado sin perder otros atributos.

¿Cómo actualizar, anidar y borrar campos en Firestore?

Estas operaciones perfeccionan la edición de documentos: cambiar valores puntuales, crear objetos anidados o eliminar atributos específicos.

¿Cómo actualizar un campo con update?

  • Se referencia el documento (colección, ID) y se llama update con un objeto JavaScript.
  • Ejemplo: actualizar el campo image link del documento 14638 con un nuevo valor.
  • Ventaja: solo cambia lo que indicas, no afecta otros campos.

¿Cómo crear o actualizar un objeto anidado?

  • Se define el atributo con notación de puntos, por ejemplo post.categoría, y se asigna un valor.
  • Efecto: Firestore crea el objeto post con el hijo categoría si no existía.
  • Uso ideal para estructurar datos jerárquicos sin múltiples escrituras.

¿Cómo borrar un campo o un documento?

  • Campo específico: con update y firebase.firestore.fieldValue.delete indicas qué atributo eliminar.
  • Documento completo: se referencia y se ejecuta la eliminación al final del flujo de pruebas.
  • Resultado: control fino para limpieza de datos y mantenimiento.

¿Cómo consultar datos en Firestore con filtros, orden y límites?

Además del real time, puedes leer bajo demanda con get y aplicar filtros con where. También ordenas con orderBy y restringes resultados con limit.

¿Cómo leer un documento y filtrar por igualdad?

  • Lectura directa: referencia al documento y get para obtener sus datos; se imprime el título.
  • Filtro por campo: where("título", "==", valor) trae todos los documentos cuyo título coincide. Se mostró cómo dos posts tenían “test uno”.

¿Cómo ordenar y limitar resultados con orderBy y limit?

  • orderBy permite definir el campo y la dirección (ascendente o descendente).
  • limit restringe cuántos documentos retornas, por ejemplo 2 o 3.
  • Flujo típico: consultar todos los posts, ordenarlos por título ascendente y limitar el total.

¿Cómo funcionan las consultas compuestas y los operadores?

  • Firestore combina múltiples where con AND (título y autor). No permite OR directo.
  • Operadores permitidos: igual, mayor, menor, mayor o igual, menor o igual. No se admite diferente.
  • Índices: si combinas orderBy con filtros, o usas desigualdad junto con igualdad, pueden requerirse índices para que la consulta funcione eficientemente.

¿Tienes dudas sobre batch, merge: true, operadores where u orderBy? Deja tus preguntas y comparte tu caso para comentar mejoras puntuales.