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:
trueofalse. - 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: "joan@example.com",
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
productesamb 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
preua 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
