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.