En este módulo, aprenderemos cómo escribir funciones en Firebase utilizando Firebase Functions. Firebase Functions es una solución de backend sin servidor que permite ejecutar código en respuesta a eventos desencadenados por Firebase y otros servicios de Google Cloud. Las funciones se escriben en JavaScript o TypeScript y se ejecutan en un entorno Node.js.

Contenido

Configuración del entorno

Antes de escribir funciones, necesitamos configurar nuestro entorno de desarrollo.

Paso 1: Instalar Firebase CLI

Primero, asegúrate de tener Node.js y npm instalados. Luego, instala Firebase CLI globalmente:

npm install -g firebase-tools

Paso 2: Inicializar el proyecto

Navega a tu directorio de proyecto y ejecuta el siguiente comando para inicializar Firebase Functions:

firebase init functions

Sigue las instrucciones en pantalla para seleccionar el proyecto de Firebase y el lenguaje (JavaScript o TypeScript).

Paso 3: Estructura del proyecto

Después de la inicialización, tu proyecto tendrá una estructura similar a esta:

my-project/
├── functions/
│   ├── .eslintrc.js
│   ├── index.js
│   ├── package.json
│   └── node_modules/
└── firebase.json

Estructura básica de una función

Las funciones de Firebase se definen en el archivo index.js (o index.ts si usas TypeScript). Aquí hay un ejemplo básico de una función HTTP:

const functions = require('firebase-functions');

exports.helloWorld = functions.https.onRequest((request, response) => {
  response.send("Hello from Firebase!");
});

Explicación del código

  • const functions = require('firebase-functions');: Importa el módulo de Firebase Functions.
  • exports.helloWorld: Define una nueva función llamada helloWorld.
  • functions.https.onRequest: Especifica que esta función se activará mediante una solicitud HTTP.
  • (request, response) => { ... }: Define el manejador de la solicitud HTTP.

Tipos de funciones

Firebase Functions admite varios tipos de funciones, incluyendo:

  1. Funciones HTTP: Se activan mediante solicitudes HTTP.
  2. Funciones de base de datos: Se activan en respuesta a cambios en la base de datos de Firebase.
  3. Funciones de Firestore: Se activan en respuesta a cambios en Cloud Firestore.
  4. Funciones de autenticación: Se activan en respuesta a eventos de autenticación.
  5. Funciones de almacenamiento: Se activan en respuesta a cambios en el almacenamiento de Firebase.

Ejemplo de función de base de datos

exports.onUserCreate = functions.database.ref('/users/{userId}')
    .onCreate((snapshot, context) => {
      const newUser = snapshot.val();
      console.log('New user created:', newUser);
    });

Ejemplo de función de Firestore

exports.onDocumentCreate = functions.firestore.document('/users/{userId}')
    .onCreate((snap, context) => {
      const newValue = snap.data();
      console.log('New document created:', newValue);
    });

Ejemplos prácticos

Función HTTP con parámetros

exports.greetUser = functions.https.onRequest((request, response) => {
  const name = request.query.name || 'Guest';
  response.send(`Hello, ${name}!`);
});

Función de Firestore con lógica adicional

exports.addWelcomeMessage = functions.firestore.document('/users/{userId}')
    .onCreate((snap, context) => {
      const userId = context.params.userId;
      const user = snap.data();
      const welcomeMessage = `Welcome, ${user.name}!`;

      return admin.firestore().collection('messages').add({
        userId: userId,
        message: welcomeMessage,
        timestamp: admin.firestore.FieldValue.serverTimestamp()
      });
    });

Errores comunes y consejos

  1. Permisos insuficientes: Asegúrate de que las reglas de seguridad de Firebase permitan las operaciones que tu función intenta realizar.
  2. Errores de despliegue: Verifica que tu proyecto esté correctamente configurado y que estés autenticado en Firebase CLI.
  3. Manejo de errores: Siempre maneja los errores en tus funciones para evitar fallos inesperados.

Consejos adicionales

  • Usa async/await: Facilita el manejo de operaciones asíncronas.
  • Prueba localmente: Usa firebase emulators:start para probar tus funciones localmente antes de desplegarlas.
  • Optimiza el rendimiento: Minimiza el uso de recursos y optimiza las consultas a la base de datos.

Conclusión

En esta sección, hemos aprendido cómo escribir y desplegar funciones en Firebase. Hemos cubierto la configuración del entorno, la estructura básica de una función, los diferentes tipos de funciones y algunos ejemplos prácticos. Además, hemos discutido errores comunes y consejos para mejorar tu experiencia con Firebase Functions. En el próximo módulo, exploraremos cómo desplegar estas funciones y activarlas en respuesta a eventos específicos.

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