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
        • Documento tareaID2
          • Campo titulo: "Llamar al doctor"
          • Campo completada: true

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 y disponible.
  • Cada libro debe tener una subcolección prestamos que contenga documentos con los campos usuario y fecha.

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

Módulo 3: Base de datos en tiempo real de Firebase

Módulo 4: Cloud Firestore

Módulo 5: Almacenamiento de Firebase

Módulo 6: Mensajería en la nube de Firebase

Módulo 7: Análisis de Firebase

Módulo 8: Funciones de Firebase

Módulo 9: Monitoreo de rendimiento de Firebase

Módulo 10: Laboratorio de pruebas de Firebase

Módulo 11: Temas avanzados de Firebase

© Copyright 2024. Todos los derechos reservados