Mobilutveckling med Flutter · Lektion

Cloud Firestore-databas

Använd Cloud Firestore, en NoSQL-dokumentdatabas, för att lagra och synkronisera data i realtid mellan alla anslutna klienter.

Lektion 2 av 412 steg

Cloud Firestore-databas är en gratis lektion i Mobilutveckling med Flutter på CoddyKit. Detta är lektion 2 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Mobilutveckling med Flutter, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Mobilutveckling med Flutter innehåller totalt 4 lektioner.

Vad är Cloud Firestore?

Välkomna till Cloud Firestore! Det är en flexibel och skalbar NoSQL-dokumentdatabas från Firebase för utveckling av mobilappar, webbappar och servrar.

Data synkroniseras mellan klientappar i realtid och tjänsten erbjuder stöd för offlineanvändning, vilket gör den utmärkt för responsiva appar.

Så organiseras data

Firestore lagrar data i dokument, som liknar JSON-objekt. Dokument organiseras i samlingar, som fungerar som behållare för dokument.

  • Samlingar: Grupper av dokument.
  • Dokument: Nyckel-värde-par (fält) som kan innehålla undersamlingar.
  • Fält: De faktiska datapunkterna i ett dokument.

Firestore jämfört med Realtime Database

Firebase erbjuder två databaser: Firestore och Realtime Database. Firestore föredras i allmänhet för nya appar tack vare sin mer intuitiva datamodell, kraftfulla frågefunktioner och bättre skalbarhet.

Se Firestore som en modern uppgradering med bättre struktur och frågemöjligheter för komplexa data.

Åtkomst till Firestore i Flutter

Om ni vill interagera med Firestore ska ni först kontrollera att Firebase har initierats (i lektion 1). Hämta sedan en instans av FirebaseFirestore:

Ni behöver lägga till paketet cloud_firestore i 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.
}

Lagra nya dokument

Ni kan lägga till data i Firestore med set() eller add(). Med set() anger ni dokument-ID:t själva, medan add() genererar ett automatiskt.

Vi lägger till en ny användare i samlingen 'users':

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.");
}

Hämta data en gång

Om ni vill läsa ett enskilt dokument refererar ni till dess samling och ID och anropar sedan get().

Detta hämtar data en gång. Därefter tittar vi på realtidsuppdateringar.

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!");
  }
}

Ändra befintliga dokument

Använd metoden update() på en dokumentreferens för att ändra specifika fält utan att skriva över hela dokumentet.

Det är användbart när ni vill göra mindre justeringar i befintliga poster.

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"
  // });
}

Ta bort dokument och fält

Ni kan ta bort ett helt dokument eller bara specifika fält i ett dokument.

  • Använd delete() på en dokumentreferens för att ta bort hela dokumentet.
  • Använd FieldValue.delete() i ett anrop till update() för att ta bort ett specifikt fält.
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.");
}

Datauppdateringar i realtid

En av Firestores mest kraftfulla funktioner är datasynkronisering i realtid. Använd snapshots() för att lyssna efter ändringar i ett dokument eller en samling.

Appen tar automatiskt emot uppdateringar när data ändras i databasen.

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().
}

Avancerade datafrågor

Firestore stöder kraftfulla frågor för att filtrera och sortera data. Ni kan kedja flera where()-villkor och anrop till orderBy().

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

Kom ihåg att komplexa frågor kan kräva att ni skapar index i Firebase Console.

Kontroll av Firestore-operationer

Vilka av följande påståenden om Cloud Firestore-operationer är sanna?

Sammanfattning av Firestore

Bra jobbat! Ni har lärt er grunderna i Cloud Firestore, inklusive dess NoSQL-struktur och hur man lägger till, läser, uppdaterar och tar bort data.

Vi utforskade även realtidslyssnare och grundläggande frågor. Firestore är ett kraftfullt verktyg för att bygga dynamiska, datadrivna Flutter-appar!

Nästa steg är att utforska Firebase Cloud Storage för att hantera större filer som bilder och videor.

Gratis att börja

Lär dig Dart med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
22
Lektioner
88

Vanliga frågor

Är lektionen ”Cloud Firestore-databas” gratis?

Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Mobilutveckling med Flutter, inklusive ”Cloud Firestore-databas”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Mobilutveckling med Flutter innehåller totalt 4 lektioner.

Vad lär jag mig i ”Cloud Firestore-databas”?

Använd Cloud Firestore, en NoSQL-dokumentdatabas, för att lagra och synkronisera data i realtid mellan alla anslutna klienter. Ni övar på Mobilutveckling med Flutter med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Mobilutveckling med Flutter?

Du behöver inga förkunskaper. Utbildningen i Mobilutveckling med Flutter på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.

Hur lång tid tar lektionen ”Cloud Firestore-databas”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Mobilutveckling med Flutter-lektionen?

Ja. Varje Mobilutveckling med Flutter-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Konfiguration av Firebase och autentisering
  2. Cloud Firestore-databas
  3. Cloud Storage och Functions
  4. Firebase Cloud Messaging och aviseringar
← Tillbaka till Mobilutveckling med Flutter