Introducción
En este tema, aprenderemos a realizar operaciones CRUD (Crear, Leer, Actualizar y Eliminar) en Cloud Firestore. Estas operaciones son fundamentales para interactuar con la base de datos y gestionar los datos de tu aplicación.
Conceptos Clave
- Crear (Create): Añadir nuevos documentos a una colección.
- Leer (Read): Recuperar documentos de una colección.
- Actualizar (Update): Modificar documentos existentes.
- Eliminar (Delete): Borrar documentos de una colección.
Crear (Create)
Para crear un documento en Firestore, utilizamos el método set()
o add()
. La diferencia principal es que set()
requiere un ID de documento específico, mientras que add()
genera un ID automáticamente.
Ejemplo con set()
// Inicializa Firestore const db = firebase.firestore(); // Referencia a la colección const usersRef = db.collection('users'); // Crear un documento con un ID específico usersRef.doc('user_123').set({ firstName: 'John', lastName: 'Doe', email: '[email protected]' }) .then(() => { console.log('Documento creado con ID: user_123'); }) .catch((error) => { console.error('Error al crear el documento: ', error); });
Ejemplo con add()
// Inicializa Firestore const db = firebase.firestore(); // Referencia a la colección const usersRef = db.collection('users'); // Crear un documento con un ID generado automáticamente usersRef.add({ firstName: 'Jane', lastName: 'Doe', email: '[email protected]' }) .then((docRef) => { console.log('Documento creado con ID: ', docRef.id); }) .catch((error) => { console.error('Error al crear el documento: ', error); });
Leer (Read)
Para leer documentos de Firestore, utilizamos los métodos get()
y onSnapshot()
. get()
se usa para obtener datos una sola vez, mientras que onSnapshot()
se usa para escuchar cambios en tiempo real.
Ejemplo con get()
// Inicializa Firestore const db = firebase.firestore(); // Referencia a la colección const usersRef = db.collection('users'); // Obtener todos los documentos de la colección usersRef.get() .then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => `, doc.data()); }); }) .catch((error) => { console.error('Error al obtener los documentos: ', error); });
Ejemplo con onSnapshot()
// Inicializa Firestore const db = firebase.firestore(); // Referencia a la colección const usersRef = db.collection('users'); // Escuchar cambios en tiempo real usersRef.onSnapshot((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => `, doc.data()); }); });
Actualizar (Update)
Para actualizar un documento, utilizamos el método update()
. Este método solo actualiza los campos especificados y deja los demás intactos.
Ejemplo con update()
// Inicializa Firestore const db = firebase.firestore(); // Referencia al documento const userRef = db.collection('users').doc('user_123'); // Actualizar el documento userRef.update({ email: '[email protected]' }) .then(() => { console.log('Documento actualizado'); }) .catch((error) => { console.error('Error al actualizar el documento: ', error); });
Eliminar (Delete)
Para eliminar un documento, utilizamos el método delete()
.
Ejemplo con delete()
// Inicializa Firestore const db = firebase.firestore(); // Referencia al documento const userRef = db.collection('users').doc('user_123'); // Eliminar el documento userRef.delete() .then(() => { console.log('Documento eliminado'); }) .catch((error) => { console.error('Error al eliminar el documento: ', error); });
Ejercicio Práctico
Ejercicio 1: Crear y Leer Documentos
- Crear: Añade un nuevo documento a una colección llamada
products
con los camposname
,price
ycategory
. - Leer: Recupera todos los documentos de la colección
products
y muestra sus datos en la consola.
Solución
// Inicializa Firestore const db = firebase.firestore(); // Referencia a la colección const productsRef = db.collection('products'); // Crear un nuevo documento productsRef.add({ name: 'Laptop', price: 999.99, category: 'Electronics' }) .then((docRef) => { console.log('Producto creado con ID: ', docRef.id); // Leer todos los documentos de la colección return productsRef.get(); }) .then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => `, doc.data()); }); }) .catch((error) => { console.error('Error: ', error); });
Ejercicio 2: Actualizar y Eliminar Documentos
- Actualizar: Modifica el campo
price
de un documento específico en la colecciónproducts
. - Eliminar: Borra un documento específico de la colección
products
.
Solución
// Inicializa Firestore const db = firebase.firestore(); // Referencia al documento const productRef = db.collection('products').doc('product_123'); // Actualizar el documento productRef.update({ price: 899.99 }) .then(() => { console.log('Producto actualizado'); // Eliminar el documento return productRef.delete(); }) .then(() => { console.log('Producto eliminado'); }) .catch((error) => { console.error('Error: ', error); });
Conclusión
En esta sección, hemos aprendido a realizar operaciones CRUD en Cloud Firestore. Estas operaciones son esenciales para gestionar los datos de tu aplicación de manera eficiente. Asegúrate de practicar estos conceptos para familiarizarte con la API de Firestore y sus capacidades. En el próximo módulo, exploraremos consultas avanzadas en Firestore para obtener datos de manera más específica y eficiente.
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