Presentación de Firebase Firestore
Firestore es el servicio de base de datos proporcionado por Firebase, que te permite almacenar, recuperar, modificar y eliminar información para crear aplicaciones dinámicas.
Ventajas de la base de datos Firebase
Las bases de datos de Firebase están estructuradas en un formato NoSQL, lo que significa que una colección puede contener documentos con formatos diferentes. Por ejemplo, un documento A puede tener los campos “Nombre” y “Edad”, mientras que un documento B contiene “Lugar” y “Color”, sin problema alguno.
Este formato ofrece la ventaja de la «escalabilidad», es decir, la capacidad de ampliar la aplicación con nuevos campos que no estaban previstos desde el inicio. Por ejemplo, si ahora quiero obtener el número de teléfono de un usuario, en una base de datos SQL no podría hacerlo si no existiera una columna dedicada a esta información desde el inicio. En este caso, tendría que rehacer la base de datos desde cero. Este problema no existe con NoSQL, ya que puedo añadir campos a los documentos existentes e incluso tener campos diferentes en cada documento.
Tarifas
El servicio Firestore es gratuito hasta cierto límite y luego se cobra por cada uso adicional. A continuación, el detalle de la tarifa:
Servicio | Gratis hasta | Tarifa |
---|---|---|
1 GiB de datos almacenados | $0.1725 por GiB al mes | |
10 GiB de consumo de datos al mes | $0.1725 por GiB al mes | |
20,000 escrituras/modificaciones* de documentos al día | $0.1042 por cada 100,000 documentos | |
50,000 lecturas por documento | $0.0345 por cada 100,000 documentos | |
20,000 eliminaciones de documentos al día | $0.0115 por cada 100,000 documentos |
* Aquí, la creación de un documento desde cero o la modificación de un solo campo se cuenta de la misma manera. Si modificas todo un documento de una sola vez, cuenta como una única acción, aunque cambies varios campos. Sin embargo, si realizas 3 cambios en 3 campos diferentes, se contará como 3 modificaciones.
** Aquí, una lectura de documento corresponde a un documento que se envía a tu interfaz. Si consultas 10 documentos de una colección de 100 documentos, cuenta como 10 acciones, no como 100, aunque todos los documentos se encuentren en la misma colección.
Funcionamiento de una base de datos Firebase
Para entender la organización de una base de datos en Firebase, es importante conocer tres conceptos básicos:
- Las colecciones
- Los documentos
- Los campos
La base de datos Firebase tiene una estructura en forma de árbol. En la base se encuentra una colección, que contiene documentos. Estos documentos pueden a su vez contener subcolecciones, que contienen sus propios documentos, y así sucesivamente. Las colecciones y documentos están definidos por nombres únicos que permiten identificarlos, además de los campos que contienen. Cada campo tiene un nombre y almacena la información específica que deseas guardar y consultar posteriormente.
Estas tres entidades ayudan a componer una dirección única para acceder al dato que necesitas. Por ejemplo, si quiero obtener la edad de un usuario, voy a la colección “User”, que contiene un documento por cada persona que usa la aplicación. Encuentro el documento correcto utilizando el ID del usuario y luego consulto el campo “Age” para recuperar su edad.

Crear y modificar tu base de datos
El primer paso para crear una base de datos en Firebase es generar un proyecto y conectarlo a tu aplicación Flutter. Si aún no sabes cómo hacer esto, te recomiendo leer mi artículo sobre cómo instalar Firebase para Flutter.
Una vez conectado, dirígete a la página principal de tu proyecto en Firebase. Haz clic en el botón «Cloud Firestore» y luego en “crear una base de datos”. Selecciona la región geográfica donde deseas que se aloje tu back-end (idealmente donde se encuentran tus usuarios para reducir el tiempo de espera). Haz clic en siguiente para establecer las reglas de seguridad (puedes comenzar en modo de prueba). Ahora, tu base de datos está lista para funcionar; solo falta añadir la información que necesitas.
// Permitir acceso de lectura/escritura en todos los documentos para cualquier usuario autenticado en la aplicación
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
El CRUD
Aunque puedes modificar manualmente tus colecciones y documentos, el objetivo es automatizar esta parte. Firebase ofrece funciones para crear, consultar, actualizar y eliminar tus documentos fácilmente. Estas operaciones se conocen como CRUD:
- Create (Crear)
- Review (Consultar)
- Update (Modificar)
- Delete (Eliminar)
Antes de usar estos métodos, lo primero es importar los paquetes necesarios en Visual Studio y colocarlos en la parte superior de los archivos .dart donde los utilizarás:
¿No sabes qué es un paquete ni cómo importarlo en tu aplicación? Te recomiendo leer mi artículo sobre los paquetes en Flutter.
Create
Lo primero para añadir un documento a tu colección desde el front-end es crear una “instancia”, es decir, un objeto que te permitirá manipular documentos con Firebase. Puedes almacenar esta instancia en una variable para reutilizarla en todos tus documentos, como en el siguiente ejemplo:
firebase = FirebaseFirestore.instance;
Después, usa el siguiente método para añadir un documento:
firebase.
collection("nombre_de_tu_colección")
.doc("nombre_de_tu_documento")
.add({
"Nombre del campo 1": "Valor 1",
"Nombre del campo 2": "Valor 2",
"Nombre del campo 3": "Valor 3",
etc.
});
Si la colección donde deseas crear el documento no existe, se creará automáticamente junto con el documento.
También puedes usar el siguiente método:
firebase.
collection("nombre_de_tu_colección")
.doc("nombre_de_tu_documento")
.set({
"Nombre del campo 1": "Valor 1",
"Nombre del campo 2": "Valor 2",
"Nombre del campo 3": "Valor 3",
etc.
});
Review
Si aún no lo has hecho, crea primero una “instancia” para manipular documentos con Firebase. Guarda esta instancia en una variable para reutilizarla:
firebase = FirebaseFirestore.instance;
Luego, para consultar un documento y enviarlo a tu front-end, usa:
firebase.
collection("nombre_de_tu_colección")
.doc("nombre_de_tu_documento")
.get();
También puedes usar:
firebase.
collection("nombre_de_tu_colección")
.doc("nombre_de_tu_documento")
.snapshot();
Update
Para modificar un documento, crea primero una “instancia” de Firebase:
firebase = FirebaseFirestore.instance;
Luego, usa el siguiente método para modificar un documento:
firebase.
collection("nombre_de_tu_colección")
.doc("nombre_de_tu_documento")
.update({
"Nombre del campo a modificar 1": "Nuevo valor 1",
"Nombre del campo a modificar 2": "Nuevo valor 2",
etc.
});
Otra opción es usar:
firebase.
collection("nombre_de_tu_colección")
.doc("nombre_de_tu_documento")
.set({
"Nombre del campo a modificar 1": "Nuevo valor 1",
"Nombre del campo a modificar 2": "Nuevo valor 2",
etc.
});
Delete
Para eliminar un documento, crea primero una “instancia” en Firebase:
firebase = FirebaseFirestore.instance;
Después, usa el siguiente método para borrar un documento:
firebase.
collection("nombre_de_tu_colección")
.doc("nombre_de_tu_documento")
.delete();
Conclusión
Ahora eres capaz de crear una base de datos en Firebase donde puedes crear colecciones, documentos y campos, ya sea manualmente o desde tu aplicación Flutter. El siguiente paso en tu aprendizaje será aprender a crear perfiles de usuario en Firebase y gestionarlos: