0Pricing
Flutter Mobile Development · Leçon

Base de données Cloud Firestore

Utilisez Cloud Firestore, une base de données documentaire NoSQL, pour stocker et synchroniser les données en temps réel entre tous les clients connectés.

Base de données Cloud Firestore est une leçon Flutter Mobile Development gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Flutter Mobile Development, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Flutter Mobile Development comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

What is Cloud Firestore?

Welcome to Cloud Firestore! It's a flexible, scalable NoSQL document database for mobile, web, and server development from Firebase.

It keeps your data in sync across client apps in real-time and offers offline support, making it great for responsive apps.

How Data is Organized

Firestore stores data in documents, which are like JSON objects. Documents are organized into collections, which are containers for documents.

  • Collections: Groups of documents.
  • Documents: Key-value pairs (fields) that can contain subcollections.
  • Fields: The actual data points within a document.

Firestore vs. Realtime Database

Firebase offers two databases: Firestore and Realtime Database. Firestore is generally preferred for new apps due to its more intuitive data model, powerful querying, and better scalability.

Think of Firestore as a modern upgrade, offering better structure and query capabilities for complex data.

Accessing Firestore in Flutter

To interact with Firestore, first ensure you've initialized Firebase (from Lesson 1). Then, get an instance of FirebaseFirestore:

You'll need to add the cloud_firestore package to your pubspec.yaml.

import 'package:cloud_firestore/cloud_firestore.dart';
// Ensure Firebase is initialized in your main() or similar
// For example: await Firebase.initializeApp();

void main() {
  FirebaseFirestore db = FirebaseFirestore.instance;
  print("Firestore instance obtained!");
  // You would typically use this 'db' instance
  // within your Flutter widgets.
}

Storing New Documents

You can add data to Firestore using set() or add(). set() lets you specify the document ID, while add() auto-generates one.

Let's add a new user to a 'users' collection:

import 'package:cloud_firestore/cloud_firestore.dart';
// Assume Firebase.initializeApp() is done.

void main() async {
  FirebaseFirestore db = FirebaseFirestore.instance;

  // Using .add() - Firestore generates a document ID
  DocumentReference docRef = await db.collection("users").add({
    "name": "Alice",
    "email": "alice@example.com",
    "age": 30,
    "isActive": true
  });
  print("Document added with ID: ${docRef.id}");

  // Using .set() - you provide the document ID
  await db.collection("cities").doc("LA").set({
    "name": "Los Angeles",
    "state": "CA",
    "country": "USA"
  });
  print("City 'LA' added.");
}

Fetching Data Once

To read a single document, you reference its collection and ID, then call get().

This fetches the data once. We'll look at real-time updates next.

import 'package:cloud_firestore/cloud_firestore.dart';
// Assume Firebase.initializeApp() is done.

void main() async {
  FirebaseFirestore db = FirebaseFirestore.instance;

  // Replace 'some_doc_id' with an actual ID from your Firestore
  DocumentSnapshot doc = await db.collection("users").doc("some_doc_id").get();

  if (doc.exists) {
    print("Document data: ${doc.data()}");
    print("User name: ${doc.get('name')}");
  } else {
    print("No such document!");
  }
}

Modifying Existing Documents

Use the update() method on a document reference to change specific fields without overwriting the entire document.

This is useful for making small adjustments to existing records.

import 'package:cloud_firestore/cloud_firestore.dart';
// Assume Firebase.initializeApp() is done.

void main() async {
  FirebaseFirestore db = FirebaseFirestore.instance;

  // Replace 'some_doc_id' with an actual ID
  String docIdToUpdate = "some_doc_id";

  await db.collection("users").doc(docIdToUpdate).update({
    "age": 31,
    "city": "New York" // Add a new field
  });
  print("Document updated successfully!");

  // You can also update nested fields using dot notation
  // await db.collection("users").doc(docIdToUpdate).update({
  //   "address.street": "Main St"
  // });
}

Removing Documents and Fields

You can delete an entire document or just specific fields within a document.

  • Use delete() on a document reference to remove the whole document.
  • Use FieldValue.delete() in an update() call to remove a specific field.
import 'package:cloud_firestore/cloud_firestore.dart';
// Assume Firebase.initializeApp() is done.

void main() async {
  FirebaseFirestore db = FirebaseFirestore.instance;

  // Replace with an actual document ID you wish to delete
  String docIdToDelete = "some_other_doc_id";

  // Delete a specific field from a document
  await db.collection("users").doc("some_doc_id").update({
    "isActive": FieldValue.delete()
  });
  print("Field 'isActive' deleted from document 'some_doc_id'.");

  // Delete an entire document
  await db.collection("users").doc(docIdToDelete).delete();
  print("Document '${docIdToDelete}' deleted.");
}

Real-time Data Updates

One of Firestore's most powerful features is real-time data synchronization. Use snapshots() to listen for changes to a document or collection.

Your app will automatically receive updates whenever the data changes in the database.

import 'package:cloud_firestore/cloud_firestore.dart';
// Assume Firebase.initializeApp() is done.

void main() {
  FirebaseFirestore db = FirebaseFirestore.instance;

  // Listen to a single document
  db.collection("users").doc("some_doc_id").snapshots().listen((snapshot) {
    if (snapshot.exists) {
      print("Real-time update for doc: ${snapshot.data()}");
    } else {
      print("Document no longer exists.");
    }
  });

  // Listen to a whole collection
  db.collection("users").snapshots().listen((snapshot) {
    print("Real-time update for collection. Total docs: ${snapshot.docs.length}");
    for (var doc in snapshot.docs) {
      print("  - ${doc.id}: ${doc.data()['name']}");
    }
  });

  print("Listeners set up. App will now receive real-time updates.");
  // In a real Flutter app, this would be part of a StatefulWidget's initState
  // and listeners would be cancelled in dispose().
}

Advanced Data Queries

Firestore allows powerful queries to filter and order your data. You can chain multiple where() clauses and orderBy() calls.

  • where('field', isEqualTo: value)
  • orderBy('field', descending: true)
  • limit(count)

Remember, complex queries might require creating indexes in the Firebase console.

Firestore Operations Check

Which of the following statements about Cloud Firestore operations are TRUE?

Firestore Summary

Great job! You've learned the fundamentals of Cloud Firestore, including its NoSQL structure, how to add, read, update, and delete data.

We also explored real-time listeners and basic querying. Firestore is a powerful tool for building dynamic, data-driven Flutter apps!

Next, we'll explore Firebase Cloud Storage for handling larger files like images and videos.

Questions Fréquemment Posées

La leçon « Base de données Cloud Firestore » est-elle gratuite ?

Oui — le texte complet de « Base de données Cloud Firestore » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Flutter Mobile Development, passe à CoddyKit PRO. Le cours Flutter Mobile Development comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Base de données Cloud Firestore » ?

Utilisez Cloud Firestore, une base de données documentaire NoSQL, pour stocker et synchroniser les données en temps réel entre tous les clients connectés. Tu pratiques Flutter Mobile Development avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Flutter Mobile Development ?

Aucune expérience préalable n'est requise. Flutter Mobile Development sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Base de données Cloud Firestore » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Flutter Mobile Development ?

Oui. Chaque leçon Flutter Mobile Development inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Configuration de Firebase et authentification
  2. Base de données Cloud Firestore
  3. Stockage cloud et fonctions
  4. Firebase Cloud Messaging et notifications
← Retour à Flutter Mobile Development