Introducció

En aquest tema, explorarem com estructurar les dades a la base de dades en temps real de Firebase i com definir regles de seguretat per protegir aquestes dades. Una bona estructura de dades i regles de seguretat ben definides són essencials per garantir que la teva aplicació sigui eficient i segura.

Estructura de dades

  1. Nodes i claus

La base de dades en temps real de Firebase emmagatzema les dades en un format JSON, on cada node és una clau que conté un valor. Els nodes poden contenir altres nodes, creant una estructura jeràrquica.

Exemple:

{
  "usuaris": {
    "usuari1": {
      "nom": "Joan",
      "edat": 30
    },
    "usuari2": {
      "nom": "Maria",
      "edat": 25
    }
  },
  "missatges": {
    "missatge1": {
      "text": "Hola!",
      "usuari": "usuari1"
    },
    "missatge2": {
      "text": "Bon dia!",
      "usuari": "usuari2"
    }
  }
}

  1. Normalització de dades

Per evitar la duplicació de dades i mantenir una estructura escalable, és recomanable normalitzar les dades. Això implica dividir les dades en diferents nodes i utilitzar referències per connectar-les.

Exemple:

{
  "usuaris": {
    "usuari1": {
      "nom": "Joan",
      "edat": 30
    },
    "usuari2": {
      "nom": "Maria",
      "edat": 25
    }
  },
  "missatges": {
    "missatge1": {
      "text": "Hola!",
      "usuariId": "usuari1"
    },
    "missatge2": {
      "text": "Bon dia!",
      "usuariId": "usuari2"
    }
  }
}

  1. Indexació de dades

Per millorar el rendiment de les consultes, és important indexar les dades. Firebase permet definir índexs a les regles de seguretat.

Exemple de regles d'indexació:

{
  "rules": {
    "usuaris": {
      ".indexOn": ["nom"]
    },
    "missatges": {
      ".indexOn": ["usuariId"]
    }
  }
}

Regles de seguretat

  1. Introducció a les regles de seguretat

Les regles de seguretat de Firebase determinen qui pot llegir i escriure dades a la base de dades. Aquestes regles es defineixen en un fitxer JSON i s'apliquen a cada node de la base de dades.

  1. Regles bàsiques

Les regles de seguretat es defineixen utilitzant les propietats .read i .write.

Exemple:

{
  "rules": {
    ".read": "auth != null",
    ".write": "auth != null"
  }
}

Aquestes regles permeten l'accés només als usuaris autenticats.

  1. Regles basades en nodes

Es poden definir regles específiques per a diferents nodes de la base de dades.

Exemple:

{
  "rules": {
    "usuaris": {
      "$usuariId": {
        ".read": "$usuariId === auth.uid",
        ".write": "$usuariId === auth.uid"
      }
    },
    "missatges": {
      ".read": "auth != null",
      ".write": "auth != null"
    }
  }
}

En aquest exemple, només l'usuari propietari de les dades pot llegir i escriure en el seu node d'usuari, mentre que tots els usuaris autenticats poden llegir i escriure missatges.

  1. Validació de dades

Les regles de seguretat també poden validar les dades abans de permetre l'escriptura.

Exemple:

{
  "rules": {
    "usuaris": {
      "$usuariId": {
        ".write": "$usuariId === auth.uid",
        ".validate": "newData.hasChildren(['nom', 'edat']) && newData.child('edat').isNumber()"
      }
    }
  }
}

Aquestes regles asseguren que cada node d'usuari conté els camps nom i edat, i que edat és un número.

Exercicis pràctics

Exercici 1: Crear una estructura de dades

  1. Crea una estructura de dades per a una aplicació de xat que inclogui usuaris i missatges.
  2. Normalitza les dades per evitar duplicacions.

Solució:

{
  "usuaris": {
    "usuari1": {
      "nom": "Joan",
      "edat": 30
    },
    "usuari2": {
      "nom": "Maria",
      "edat": 25
    }
  },
  "missatges": {
    "missatge1": {
      "text": "Hola!",
      "usuariId": "usuari1"
    },
    "missatge2": {
      "text": "Bon dia!",
      "usuariId": "usuari2"
    }
  }
}

Exercici 2: Definir regles de seguretat

  1. Defineix regles de seguretat que permetin només als usuaris autenticats llegir i escriure missatges.
  2. Assegura't que només l'usuari propietari pugui llegir i escriure en el seu node d'usuari.

Solució:

{
  "rules": {
    "usuaris": {
      "$usuariId": {
        ".read": "$usuariId === auth.uid",
        ".write": "$usuariId === auth.uid"
      }
    },
    "missatges": {
      ".read": "auth != null",
      ".write": "auth != null"
    }
  }
}

Conclusió

En aquesta secció, hem après com estructurar les dades a la base de dades en temps real de Firebase i com definir regles de seguretat per protegir aquestes dades. Hem vist la importància de normalitzar les dades, indexar-les per millorar el rendiment i definir regles de seguretat per controlar l'accés i validar les dades. Amb aquests coneixements, estàs preparat per crear una base de dades segura i eficient per a la teva aplicació.

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