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.
-
Instal·lar Firebase CLI:
npm install -g firebase-tools
-
Iniciar sessió a Firebase:
firebase login
-
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ó anomenadahelloWorld
.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.
-
Instal·lar Firebase Emulator Suite:
firebase emulators:start
-
Executar les funcions localment:
firebase functions:shell
Desplegar funcions
Un cop hàgiu provat les funcions localment, podeu desplegar-les al núvol.
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
- Introducció a l'autenticació de Firebase
- Autenticació amb correu electrònic i contrasenya
- Autenticació amb xarxes socials
- Gestió d'usuaris
Mòdul 3: Base de dades en temps real de Firebase
- Introducció a la base de dades en temps real
- Lectura i escriptura de dades
- Estructura de dades i regles de seguretat
- Capacitats fora de línia
Mòdul 4: Cloud Firestore
- Introducció a Cloud Firestore
- Model de dades de Firestore
- Operacions CRUD
- Consultes avançades
- Regles de seguretat
Mòdul 5: Emmagatzematge de Firebase
- Introducció a l'emmagatzematge de Firebase
- Carregar fitxers
- Descarregar fitxers
- Metadades de fitxers i seguretat
Mòdul 6: Missatgeria en el núvol de Firebase
- Introducció a la missatgeria en el núvol
- Enviar notificacions
- Gestionar notificacions
- Funcions avançades de missatgeria
Mòdul 7: Analítica de Firebase
Mòdul 8: Funcions de Firebase
Mòdul 9: Monitoratge del rendiment de Firebase
- Introducció al monitoratge del rendiment
- Configuració del monitoratge del rendiment
- Analitzar dades de rendiment