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
- 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" } } }
- 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" } } }
- 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ó:
Regles de seguretat
- 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.
- Regles bàsiques
Les regles de seguretat es defineixen utilitzant les propietats .read
i .write
.
Exemple:
Aquestes regles permeten l'accés només als usuaris autenticats.
- 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.
- 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
- Crea una estructura de dades per a una aplicació de xat que inclogui usuaris i missatges.
- 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
- Defineix regles de seguretat que permetin només als usuaris autenticats llegir i escriure missatges.
- 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
- 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