En aquest tema, explorarem el model de dades de Cloud Firestore, que és una base de dades NoSQL flexible i escalable per al desenvolupament d'aplicacions mòbils, web i de servidor. Firestore emmagatzema dades en documents, que s'organitzen en col·leccions. Aquesta estructura permet una gran flexibilitat i escalabilitat.
Conceptes clau
- Documents
- Definició: Un document és una unitat de dades que conté parells clau-valor.
- Identificador: Cada document té un identificador únic dins de la seva col·lecció.
- Dades: Els documents poden contenir dades de diversos tipus, com ara cadenes, nombres, booleans, mapes, matrius, referències, etc.
- Col·leccions
- Definició: Una col·lecció és un conjunt de documents.
- Organització: Les col·leccions no poden contenir directament altres col·leccions, però els documents dins d'una col·lecció poden tenir subcol·leccions.
- Subcol·leccions
- Definició: Una subcol·lecció és una col·lecció que existeix dins d'un document.
- Nidificació: Les subcol·leccions poden tenir els seus propis documents, que al seu torn poden tenir les seves pròpies subcol·leccions, permetent una estructura de dades jeràrquica.
- Tipus de dades
- Cadenes: Text.
- Nombres: Enters i flotants.
- Booleans:
true
ofalse
. - Mapes: Objectes anidats.
- Matrius: Llistes de valors.
- Referències: Enllaços a altres documents.
- Marques de temps: Dates i hores.
- Geopunts: Coordenades geogràfiques.
Exemples pràctics
Crear un document
// Accedir a la col·lecció 'usuaris' i afegir un nou document db.collection("usuaris").add({ nom: "Joan", edat: 30, correu: "[email protected]", adreça: { carrer: "Carrer Major", ciutat: "Barcelona" }, interessos: ["programació", "lectura", "esports"] }) .then((docRef) => { console.log("Document escrit amb ID: ", docRef.id); }) .catch((error) => { console.error("Error afegint document: ", error); });
Llegir un document
// Accedir a un document específic dins de la col·lecció 'usuaris' var docRef = db.collection("usuaris").doc("ID_DEL_DOCUMENT"); docRef.get().then((doc) => { if (doc.exists) { console.log("Dades del document:", doc.data()); } else { console.log("No s'ha trobat el document!"); } }).catch((error) => { console.log("Error obtenint document:", error); });
Actualitzar un document
// Actualitzar un document específic dins de la col·lecció 'usuaris' var docRef = db.collection("usuaris").doc("ID_DEL_DOCUMENT"); docRef.update({ edat: 31, "adreça.ciutat": "Madrid" }) .then(() => { console.log("Document actualitzat amb èxit!"); }) .catch((error) => { console.error("Error actualitzant document: ", error); });
Eliminar un document
// Eliminar un document específic dins de la col·lecció 'usuaris' db.collection("usuaris").doc("ID_DEL_DOCUMENT").delete().then(() => { console.log("Document eliminat amb èxit!"); }).catch((error) => { console.error("Error eliminant document: ", error); });
Exercicis pràctics
Exercici 1: Crear i llegir documents
-
Crear un document: Crea un document en una col·lecció anomenada
productes
amb els següents camps:nom
: "Portàtil"preu
: 1200disponibilitat
: true
-
Llegir el document: Llegeix el document que acabes de crear i mostra les dades a la consola.
Solució
// Crear un document db.collection("productes").add({ nom: "Portàtil", preu: 1200, disponibilitat: true }) .then((docRef) => { console.log("Document escrit amb ID: ", docRef.id); // Llegir el document return docRef.get(); }) .then((doc) => { if (doc.exists) { console.log("Dades del document:", doc.data()); } else { console.log("No s'ha trobat el document!"); } }) .catch((error) => { console.error("Error: ", error); });
Exercici 2: Actualitzar i eliminar documents
- Actualitzar un document: Actualitza el document creat en l'exercici anterior per canviar el camp
preu
a 1100. - Eliminar el document: Elimina el document després d'actualitzar-lo.
Solució
// Actualitzar el document var docRef = db.collection("productes").doc("ID_DEL_DOCUMENT"); docRef.update({ preu: 1100 }) .then(() => { console.log("Document actualitzat amb èxit!"); // Eliminar el document return docRef.delete(); }) .then(() => { console.log("Document eliminat amb èxit!"); }) .catch((error) => { console.error("Error: ", error); });
Conclusió
En aquest tema, hem après sobre el model de dades de Firestore, incloent-hi els conceptes de documents, col·leccions i subcol·leccions, així com els diferents tipus de dades que es poden emmagatzemar. També hem vist exemples pràctics de com crear, llegir, actualitzar i eliminar documents. Aquests coneixements són fonamentals per treballar amb Firestore de manera eficient i efectiva. En el següent tema, explorarem les operacions CRUD en més detall.
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