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

  1. Crea una col·lecció anomenada products i afegeix un document amb els següents camps:

    • name: "Laptop"
    • price: 1200
    • stock: 30
  2. 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

  1. Actualitza el document creat en l'exercici anterior per canviar el camp stock a 25.
  2. 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

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