En aquest tema, aprendrem a realitzar operacions CRUD (Crear, Llegir, Actualitzar i Eliminar) amb Cloud Firestore. Aquestes operacions són fonamentals per gestionar les dades en qualsevol aplicació. A continuació, desglossarem cada operació amb exemples pràctics i explicacions detallades.
Crear (Create)
Per crear un nou document en una col·lecció, utilitzem el mètode add
o set
. El mètode add
genera automàticament un ID per al document, mentre que set
permet especificar un ID.
Exemple amb add
// Referència a la col·lecció const db = firebase.firestore(); const usersRef = db.collection('users'); // Afegir un nou document amb un ID generat automàticament usersRef.add({ firstName: 'John', lastName: 'Doe', email: '[email protected]' }) .then((docRef) => { console.log('Document written with ID: ', docRef.id); }) .catch((error) => { console.error('Error adding document: ', error); });
Exemple amb set
// Referència a la col·lecció const db = firebase.firestore(); const usersRef = db.collection('users'); // Afegir un nou document amb un ID específic usersRef.doc('user_123').set({ firstName: 'Jane', lastName: 'Doe', email: '[email protected]' }) .then(() => { console.log('Document successfully written!'); }) .catch((error) => { console.error('Error writing document: ', error); });
Llegir (Read)
Per llegir documents de Firestore, utilitzem els mètodes get
i onSnapshot
. El mètode get
recupera les dades una vegada, mentre que onSnapshot
escolta els canvis en temps real.
Exemple amb get
// Referència a la col·lecció const db = firebase.firestore(); const usersRef = db.collection('users'); // Obtenir tots els documents de la col·lecció usersRef.get() .then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${JSON.stringify(doc.data())}`); }); }) .catch((error) => { console.error('Error getting documents: ', error); });
Exemple amb onSnapshot
// Referència a la col·lecció const db = firebase.firestore(); const usersRef = db.collection('users'); // Escoltar els canvis en temps real usersRef.onSnapshot((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${JSON.stringify(doc.data())}`); }); });
Actualitzar (Update)
Per actualitzar un document existent, utilitzem el mètode update
. Aquest mètode només modifica els camps especificats, sense afectar la resta del document.
Exemple amb update
// Referència a la col·lecció const db = firebase.firestore(); const userRef = db.collection('users').doc('user_123'); // Actualitzar un document existent userRef.update({ email: '[email protected]' }) .then(() => { console.log('Document successfully updated!'); }) .catch((error) => { console.error('Error updating document: ', error); });
Eliminar (Delete)
Per eliminar un document, utilitzem el mètode delete
. Aquest mètode elimina completament el document de la col·lecció.
Exemple amb delete
// Referència a la col·lecció const db = firebase.firestore(); const userRef = db.collection('users').doc('user_123'); // Eliminar un document existent userRef.delete() .then(() => { console.log('Document successfully deleted!'); }) .catch((error) => { console.error('Error deleting document: ', error); });
Exercicis Pràctics
Exercici 1: Crear i Llegir Documents
-
Crea una col·lecció anomenada
products
i afegeix un document amb els següents camps:name
: "Laptop"price
: 1200stock
: 30
-
Llegeix tots els documents de la col·lecció
products
i mostra'ls a la consola.
Solució
// Crear un document const db = firebase.firestore(); const productsRef = db.collection('products'); productsRef.add({ name: 'Laptop', price: 1200, stock: 30 }) .then((docRef) => { console.log('Document written with ID: ', docRef.id); // Llegir tots els documents return productsRef.get(); }) .then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${JSON.stringify(doc.data())}`); }); }) .catch((error) => { console.error('Error: ', error); });
Exercici 2: Actualitzar i Eliminar Documents
- Actualitza el document creat en l'exercici anterior per canviar el camp
stock
a 25. - Elimina el document creat en l'exercici anterior.
Solució
// Actualitzar un document const productRef = db.collection('products').doc('ID_DEL_DOCUMENT'); // Reemplaça 'ID_DEL_DOCUMENT' amb l'ID real productRef.update({ stock: 25 }) .then(() => { console.log('Document successfully updated!'); // Eliminar el document return productRef.delete(); }) .then(() => { console.log('Document successfully deleted!'); }) .catch((error) => { console.error('Error: ', error); });
Conclusió
En aquesta secció, hem après a realitzar operacions CRUD amb Cloud Firestore. Aquestes operacions són essencials per gestionar les dades en qualsevol aplicació. Hem vist com crear, llegir, actualitzar i eliminar documents amb exemples pràctics i exercicis per reforçar els conceptes apresos. En el següent tema, explorarem les consultes avançades a Firestore.
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