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

  1. 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.

  1. 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.

  1. 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.

  1. Tipus de dades

  • Cadenes: Text.
  • Nombres: Enters i flotants.
  • Booleans: true o false.
  • 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

  1. Crear un document: Crea un document en una col·lecció anomenada productes amb els següents camps:

    • nom: "Portàtil"
    • preu: 1200
    • disponibilitat: true
  2. 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

  1. Actualitzar un document: Actualitza el document creat en l'exercici anterior per canviar el camp preu a 1100.
  2. 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

Mòdul 3: Base de dades en temps real de Firebase

Mòdul 4: Cloud Firestore

Mòdul 5: Emmagatzematge de Firebase

Mòdul 6: Missatgeria en el núvol de Firebase

Mòdul 7: Analítica de Firebase

Mòdul 8: Funcions de Firebase

Mòdul 9: Monitoratge del rendiment de Firebase

Mòdul 10: Laboratori de proves de Firebase

Mòdul 11: Temes avançats de Firebase

© Copyright 2024. Tots els drets reservats