Introducción
Cloud Firestore es una base de datos flexible y escalable para el desarrollo móvil, web y de servidor. A diferencia de las bases de datos SQL tradicionales, Firestore es una base de datos NoSQL que almacena datos en documentos, los cuales se organizan en colecciones. Este modelo de datos permite una estructura más flexible y escalable.
Conceptos Clave
Documentos
- Definición: Un documento es una unidad de almacenamiento en Firestore. Cada documento contiene un conjunto de pares clave-valor.
- Identificación: Cada documento tiene un identificador único dentro de su colección.
- Estructura: Los documentos pueden contener datos simples como cadenas, números y booleanos, así como datos complejos como listas y mapas.
Colecciones
- Definición: Una colección es un contenedor de documentos. No puede contener directamente otros documentos o colecciones.
- Jerarquía: Las colecciones pueden contener subcolecciones, lo que permite una estructura jerárquica de datos.
Subcolecciones
- Definición: Una subcolección es una colección que existe dentro de un documento. Esto permite una organización jerárquica de los datos.
- Ejemplo: Un documento de "usuarios" puede tener una subcolección de "pedidos".
Campos
- Definición: Los campos son los pares clave-valor dentro de un documento.
- Tipos de datos: Los campos pueden ser de varios tipos, incluyendo cadenas, números, booleanos, mapas, listas, fechas y referencias.
Ejemplo Práctico
Estructura de Datos
Imaginemos una aplicación de gestión de tareas. La estructura de datos podría ser la siguiente:
- Colección
usuarios
- Documento
usuarioID1
- Campo
nombre
: "Juan Pérez" - Campo
email
: "[email protected]" - Subcolección
tareas
- Documento
tareaID1
- Campo
titulo
: "Comprar leche" - Campo
completada
: false
- Campo
- Documento
tareaID2
- Campo
titulo
: "Llamar al doctor" - Campo
completada
: true
- Campo
- Documento
- Campo
- Documento
Código de Ejemplo
A continuación, se muestra cómo se puede crear esta estructura de datos en Firestore utilizando JavaScript:
// Inicializar Firestore const db = firebase.firestore(); // Crear un documento en la colección 'usuarios' db.collection('usuarios').doc('usuarioID1').set({ nombre: 'Juan Pérez', email: '[email protected]' }) .then(() => { console.log('Usuario creado con éxito'); }) .catch((error) => { console.error('Error al crear el usuario: ', error); }); // Crear documentos en la subcolección 'tareas' db.collection('usuarios').doc('usuarioID1').collection('tareas').doc('tareaID1').set({ titulo: 'Comprar leche', completada: false }) .then(() => { console.log('Tarea creada con éxito'); }) .catch((error) => { console.error('Error al crear la tarea: ', error); }); db.collection('usuarios').doc('usuarioID1').collection('tareas').doc('tareaID2').set({ titulo: 'Llamar al doctor', completada: true }) .then(() => { console.log('Tarea creada con éxito'); }) .catch((error) => { console.error('Error al crear la tarea: ', error); });
Ejercicio Práctico
Ejercicio
Crea una estructura de datos para una aplicación de biblioteca. La estructura debe incluir:
- Una colección
libros
con documentos que representen cada libro. - Cada documento de libro debe tener los campos
titulo
,autor
ydisponible
. - Cada libro debe tener una subcolección
prestamos
que contenga documentos con los camposusuario
yfecha
.
Solución
// Inicializar Firestore const db = firebase.firestore(); // Crear un documento en la colección 'libros' db.collection('libros').doc('libroID1').set({ titulo: 'Cien Años de Soledad', autor: 'Gabriel García Márquez', disponible: true }) .then(() => { console.log('Libro creado con éxito'); }) .catch((error) => { console.error('Error al crear el libro: ', error); }); // Crear documentos en la subcolección 'prestamos' db.collection('libros').doc('libroID1').collection('prestamos').doc('prestamoID1').set({ usuario: 'usuarioID1', fecha: new Date('2023-10-01') }) .then(() => { console.log('Préstamo creado con éxito'); }) .catch((error) => { console.error('Error al crear el préstamo: ', error); });
Conclusión
En este tema, hemos aprendido sobre el modelo de datos de Firestore, incluyendo conceptos clave como documentos, colecciones, subcolecciones y campos. También hemos visto ejemplos prácticos de cómo estructurar y manipular datos en Firestore. Con esta base, estamos preparados para profundizar en las operaciones CRUD en el siguiente tema.
Curso de Firebase
Módulo 1: Introducción a Firebase
Módulo 2: Autenticación de Firebase
- Introducción a la autenticación de Firebase
- Autenticación por correo electrónico y contraseña
- Autenticación de redes sociales
- Gestión de usuarios
Módulo 3: Base de datos en tiempo real de Firebase
- Introducción a la base de datos en tiempo real
- Lectura y escritura de datos
- Estructura de datos y reglas de seguridad
- Capacidades sin conexión
Módulo 4: Cloud Firestore
- Introducción a Cloud Firestore
- Modelo de datos de Firestore
- Operaciones CRUD
- Consultas avanzadas
- Reglas de seguridad
Módulo 5: Almacenamiento de Firebase
- Introducción al almacenamiento de Firebase
- Subida de archivos
- Descarga de archivos
- Metadatos de archivos y seguridad
Módulo 6: Mensajería en la nube de Firebase
- Introducción a la mensajería en la nube
- Envío de notificaciones
- Manejo de notificaciones
- Características avanzadas de mensajería
Módulo 7: Análisis de Firebase
Módulo 8: Funciones de Firebase
- Introducción a las funciones de Firebase
- Escritura de funciones
- Despliegue de funciones
- Activación de funciones
Módulo 9: Monitoreo de rendimiento de Firebase
- Introducción al monitoreo de rendimiento
- Configuración del monitoreo de rendimiento
- Análisis de datos de rendimiento
Módulo 10: Laboratorio de pruebas de Firebase
- Introducción al laboratorio de pruebas de Firebase
- Ejecución de pruebas
- Análisis de resultados de pruebas