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

  1. Crear (Create): Añadir nuevos documentos a una colección.
  2. Leer (Read): Recuperar documentos de una colección.
  3. Actualizar (Update): Modificar documentos existentes.
  4. 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

  1. Crear: Añade un nuevo documento a una colección llamada products con los campos name, price y category.
  2. 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

  1. Actualizar: Modifica el campo price de un documento específico en la colección products.
  2. 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

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