Présentation de Firebase Firestore
Firestore est le service de base de données, mis à disposition par Firebase. Celui-ci vous permet de stocker, renvoyer, modifier et supprimer des informations, et ainsi vous permettre de créer des applications dynamiques.
Avantage de la base de données Firebase
Les bases de données faites sur Firebase, sont réalisées en NoSQL. Cela veut dire qu’une collection peut tout à fait contenir des documents n’ayant pas le même format. Je peux par exemple avoir un document A qui contient deux champs “Nom” et “Age” et un document B avec “lieu” et “couleur”, sans que cela pose un problème.
Ce format présente l’avantage de la “scalabilité”, c’est-à-dire la capacité à faire venir grossir son application avec de nouveaux champs qui n’étaient pas prévus au départ. Par exemple, admettons que je souhaite désormais récupérer le numéro de téléphone de mon utilisateur. Avec une base de données SQL, je ne pourrai pas récupérer cette information si une colonne n’avait pas été prévue pour cela dès le départ. Je vais donc devoir refaire une base de données de 0. Ce problème n’existe plus avec le noSQL, puisque je peux tout à fait ajouter des champs à mes documents déjà existants et même avoir des champs différents selon les documents.
Tarifs
Le service Firestore est gratuit jusqu’à un certain point, puis devient payant pour chaque utilisation supplémentaire. Voici le détail de la tarification :
Tarifs des services Firestore | |
Gratuit jusqu’à | Puis payant selon ce tarif |
1GiB de données stockées | 0.1725 $ par GiB et par mois |
10 GiB de consommation de données par mois | 0.1725 $ par GiB et par mois |
20K écritures/modifications* de documents par jour | 0.1042 $ pour 100 000 documents |
50K par document lu | 0.0345 $ pour 100 000 documents |
20K suppressions de documents par jour | 0.0115 $ pour 100 000 documents |
* Ici, la création d’un document de 0, ou la modification d’un seul champ sont comptées de la même manière. Si vous modifiez tout un document en une seule fois, cela comptera comme une seule action, même si vous avez modifié plusieurs champs. En revanche, si vous faites 3 modifications pour 3 champs différents, alors cela sera compté comme 3 modifications.
**Ici, un document lu équivaut à un document qui est renvoyé vers votre front-end. Si vous appelez 10 documents parmi une collection de 100 documents, alors cela compte pour 10 actions et non pas 100, quand bien même le robot a dû consulter chaque document pour vérifier s’il correspondait à la requête.
Fonctionnement d’une base de données Firebase
3 notions sont à connaître pour comprendre l’organisation d’une base de données Firebase :
- Les collections ;
- Les documents ;
- Les champs.
Votre base de données Firebase prend la forme d’un arbre. À la base, on trouve une collection, remplie de documents. Ces documents seront peut-être remplis de sous collections, qui contiendront elles-mêmes des sous-documents, etc. Ces collections et ces documents sont définis, d’abord par des noms uniques qui permettent de les retrouver, mais aussi par des champs. Ces champs sont définis par un nom et contiennent chacun les informations que vous souhaitez stocker et renvoyer.
Ces 3 choses servent donc à composer une adresse unique qui va vous permettre de retrouver la valeur dont vous avez besoin. Par exemple, admettons que je souhaite retrouver l’age de mon utilisateur. Je vais pour cela aller dans ma collection ‘User’, qui contient un document pour chaque personne qui utilise mon application. Je vais retrouver le bon document avec l’ID de mon utilisateur. Puis, il ne me reste plus qu’à renvoyer le champ “Age” qui contient comme son nom l’indique son âge.

Créer et modifier votre base de données
La première chose à faire pour créer votre base de données Firebase est de créer un projet et de le connecter à votre application Flutter. Si vous ne savez pas comment faire, je vous invite à lire mon article qui traite de comment installer Firebase pour Flutter.
Une fois cela fait, rendez-vous sur la page principale de votre projet Firebase. Cliquez sur le bouton “Cloud Firestore”, puis “créer une base de données”. Sélectionnez la zone géographique où vous souhaitez que votre back-end soit hébergée (idéalement là où se trouvent vos utilisateurs pour réduire le temps d’attente). Cliquez sur suivant pour fixer vos règles de sécurité (vous pouvez commencer en mode test). Ça y est, votre base de données est prête à fonctionner. Ne reste plus qu’à y ajouter les informations dont vous avez besoin.
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
Le CRUD
Bien que vos collections et vos documents puissent être modifiés à la main, le but est d’automatiser cette partie. Firebase va ainsi mettre à disposition des fonctions pour créer, consulter, modifier et supprimer vos documents facilement. Ces méthodes portent le nom de CRUD pour :
- Create (créer) ;
- Review (Consulter) ;
- Update (Modifier) ;
- Delete (Supprimer).
Avant d’utiliser ces méthodes, la première chose est d’importer les packages dont vous allez avoir besoin dans Visual Studio. Puis, placez-les en haut des fichiers .dart où vous comptez les utiliser :
Vous ne savez pas ce qu’est un package ou comment l’importer sur votre application ? Je vous invite à consulter mon article qui traite des packages sur Flutter.
Create
La première chose à faire pour ajouter un document à votre collection depuis le front end est de créer une “instance”, c’est-à-dire un objet qui va vous permettre de manipuler des documents avec Firebase. Vous pouvez stocker cette instance dans une variable, pour pouvoir la réutiliser dans tous vos documents, comme cela :
firebase = FirebaseFirestore.instance
Par la suite, la méthode à utiliser pour ajouter un document est la suivante :
firebase.
collection("le_nom_de_votre collection")
.doc("le_nom_de_votre_document")
.add({
"Nom du champ 1": "Valeur 1";
"Nom du champ 2": "Valeur 2";
"Nom du champ 1": "Valeur 3";
etc
}).
Si la collection dans laquelle vous souhaitez créer le document n’existe pas, alors celle-ci sera créée en même temps que le document.
Il est aussi possible d’utiliser la méthode :
firebase.
collection("le_nom_de_votre collection")
.doc(“le_nom_de_votre_document”)
.set({
"Nom du champ 1": "Valeur 1";
"Nom du champ 2": "Valeur 2";
"Nom du champ 3": "Valeur 3";
etc…
}).
Review
Si vous ne l’avez pas déjà fait, la première chose à faire pour consulter un document dans votre base de données est de créer une “instance”, c’est-à-dire un objet qui va vous permettre de manipuler des documents avec Firebase. Vous pouvez stocker cette instance dans une variable, pour pouvoir la réutiliser dans tous vos documents, comme cela :
firebase = FirebaseFirestore.instance
Par la suite, la méthode à utiliser pour consulter un document et le renvoyer vers votre front-end est la suivante :
firebase.
collection("le_nom_de_votre collection")
.doc("le_nom_de_votre_document")
.get()
Il est aussi possible d’utiliser :
firebase.
collection("le_nom_de_votre collection")
.doc("le_nom_de_votre_document")
.snapshot()
Update
Si vous ne l’avez pas déjà fait, la première chose à faire pour consulter un document dans votre base de données est de créer une “instance”, c’est-à-dire un objet qui va vous permettre de manipuler des documents avec Firebase. Vous pouvez stocker cette instance dans une variable, pour pouvoir la réutiliser dans tous vos documents, comme cela :
firebase = FirebaseFirestore.instance
Par la suite, la méthode à utiliser pour modifier un document est la suivante :
firebase.
collection("le_nom_de_votre collection")
.doc("le_nom_de_votre_document")
.update({
"Nom du champ à modifier 1": "Nouvelle valeur 1";
"Nom du champ à modifier 2": "Nouvelle valeur 2";
etc…
})
Il est aussi possible d’utiliser :
firebase.
collection("le_nom_de_votre collection")
.doc("le_nom_de_votre_document")
.set({
"Nom du champ à modifier 1": "Nouvelle valeur 1";
"Nom du champ à modifier 2": "Nouvelle valeur 2";
etc…
})
Delete
Si vous ne l’avez pas déjà fait, la première chose à faire pour consulter un document dans votre base de données est de créer une “instance”, c’est-à-dire un objet qui va vous permettre de manipuler des documents avec Firebase. Vous pouvez stocker cette instance dans une variable, pour pouvoir la réutiliser dans tous vos documents, comme cela :
firebase = FirebaseFirestore.instance
Par la suite, la méthode à utiliser pour supprimer un document est la suivante :
firebase.
collection("le_nom_de_votre collection")
.doc("le_nom_de_votre_document")
.delete()
Conclusion
Vous êtes désormais capable de créer une base de données Firebase, dans laquelle vous allez pouvoir créer des collections, des documents et des champs, à la main, ou bien depuis votre application Flutter. La prochaine étape de votre apprentisage va maintenant être d’apprendre à créer des profils d’utilisateurs dans Firebase et à les gérer :
Comment ajouter Firebase Auth à votre application Flutter →