En aquest tema, aprendrem a escriure funcions amb Firebase Functions, una eina poderosa que permet executar codi backend en resposta a esdeveniments desencadenats per Firebase i altres serveis de Google Cloud. Les funcions de Firebase es poden utilitzar per a una àmplia varietat de tasques, com ara processar dades, enviar notificacions, interactuar amb altres serveis i molt més.

Continguts

Introducció a les funcions de Firebase

Firebase Functions permet escriure codi JavaScript o TypeScript que s'executa en el núvol sense necessitat de gestionar servidors. Aquest codi es pot activar en resposta a esdeveniments de Firebase, com ara canvis en la base de dades, autenticació d'usuaris, o esdeveniments HTTP.

Configuració del projecte

Abans de començar a escriure funcions, necessitem configurar el nostre projecte de Firebase.

  1. Instal·lar Firebase CLI:

    npm install -g firebase-tools
    
  2. Iniciar sessió a Firebase:

    firebase login
    
  3. Inicialitzar el projecte de funcions:

    firebase init functions
    

    Durant la inicialització, se us demanarà que seleccioneu el llenguatge (JavaScript o TypeScript) i altres configuracions. Seleccioneu les opcions que millor s'adaptin al vostre projecte.

Estructura bàsica d'una funció

Una funció de Firebase té una estructura bàsica que inclou la importació de mòduls necessaris i la definició de la funció. Aquí teniu un exemple senzill d'una funció HTTP:

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

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

Explicació del codi

  • const functions = require('firebase-functions');: Importa el mòdul de funcions de Firebase.
  • exports.helloWorld: Defineix una funció anomenada helloWorld.
  • functions.https.onRequest: Configura la funció per respondre a sol·licituds HTTP.
  • response.send("Hello from Firebase!");: Envia una resposta amb el missatge "Hello from Firebase!".

Desenvolupament de funcions

Les funcions de Firebase es poden activar en resposta a diversos esdeveniments. A continuació, veurem alguns exemples comuns.

Funcions HTTP

Les funcions HTTP es poden utilitzar per crear API RESTful o respondre a sol·licituds web.

exports.addMessage = functions.https.onRequest(async (req, res) => {
  const original = req.query.text;
  const snapshot = await admin.database().ref('/messages').push({original: original});
  res.redirect(303, snapshot.ref.toString());
});

Funcions de base de dades

Les funcions de base de dades es poden activar en resposta a esdeveniments de la base de dades en temps real o Cloud Firestore.

exports.makeUppercase = functions.database.ref('/messages/{pushId}/original')
    .onCreate((snapshot, context) => {
      const original = snapshot.val();
      const uppercase = original.toUpperCase();
      return snapshot.ref.parent.child('uppercase').set(uppercase);
    });

Provar funcions localment

Abans de desplegar les funcions, és una bona pràctica provar-les localment.

  1. Instal·lar Firebase Emulator Suite:

    firebase emulators:start
    
  2. Executar les funcions localment:

    firebase functions:shell
    

Desplegar funcions

Un cop hàgiu provat les funcions localment, podeu desplegar-les al núvol.

firebase deploy --only functions

Exemples pràctics

Exemple 1: Funció HTTP per sumar dos números

exports.sumNumbers = functions.https.onRequest((req, res) => {
  const num1 = parseInt(req.query.num1);
  const num2 = parseInt(req.query.num2);
  const sum = num1 + num2;
  res.send(`The sum is ${sum}`);
});

Exemple 2: Funció de base de dades per enviar notificacions

exports.sendNotification = functions.database.ref('/notifications/{notificationId}')
    .onCreate((snapshot, context) => {
      const notification = snapshot.val();
      const payload = {
        notification: {
          title: notification.title,
          body: notification.body
        }
      };
      return admin.messaging().sendToTopic('all', payload);
    });

Exercicis pràctics

Exercici 1: Crear una funció HTTP que multipliqui dos números

Descripció: Escriu una funció HTTP que prengui dos números com a paràmetres de consulta (num1 i num2) i retorni el producte dels dos números.

Solució:

exports.multiplyNumbers = functions.https.onRequest((req, res) => {
  const num1 = parseInt(req.query.num1);
  const num2 = parseInt(req.query.num2);
  const product = num1 * num2;
  res.send(`The product is ${product}`);
});

Exercici 2: Crear una funció de base de dades que converteixi text a minúscules

Descripció: Escriu una funció que s'activi quan es crea un nou missatge a /messages/{pushId}/original i guardi una versió en minúscules del text a /messages/{pushId}/lowercase.

Solució:

exports.makeLowercase = functions.database.ref('/messages/{pushId}/original')
    .onCreate((snapshot, context) => {
      const original = snapshot.val();
      const lowercase = original.toLowerCase();
      return snapshot.ref.parent.child('lowercase').set(lowercase);
    });

Conclusió

En aquest tema, hem après a escriure funcions amb Firebase Functions, des de la configuració del projecte fins al desenvolupament i desplegament de funcions. Hem vist exemples pràctics i hem realitzat exercicis per reforçar els conceptes apresos. Ara estem preparats per explorar funcions més avançades i integrar-les en les nostres aplicacions.

Curs de Firebase

Mòdul 1: Introducció a Firebase

Mòdul 2: Autenticació de Firebase

Mòdul 3: Base de dades en temps real de Firebase

Mòdul 4: Cloud Firestore

Mòdul 5: Emmagatzematge de Firebase

Mòdul 6: Missatgeria en el núvol de Firebase

Mòdul 7: Analítica de Firebase

Mòdul 8: Funcions de Firebase

Mòdul 9: Monitoratge del rendiment de Firebase

Mòdul 10: Laboratori de proves de Firebase

Mòdul 11: Temes avançats de Firebase

© Copyright 2024. Tots els drets reservats