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: 'john.doe@example.com'
})
.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: 'jane.doe@example.com'
})
.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: 'new.email@example.com'
})
.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
productsi afegeix un document amb els següents camps:name: "Laptop"price: 1200stock: 30
-
Llegeix tots els documents de la col·lecció
productsi 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
stocka 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
