Erste Schritte mit Firestore Standard Edition

In dieser Kurzanleitung erfahren Sie, wie Sie Cloud Firestore einrichten, Daten hinzufügen und sich die hinzugefügten Daten dann in der Firebase Console ansehen.

Cloud Firestore unterstützt mobile oder Web-SDKs und Server-Clientbibliotheken:

  • Cloud Firestore unterstützt SDKs für Android, iOS, das Web und mehr. In Kombination mit Cloud Firestore Security Rules und Firebase Authentication unterstützen die SDKs für Mobilgeräte und das Web serverlose Anwendungsarchitekturen, bei denen Clients direkt mit Ihrer Cloud Firestore-Datenbank verbunden werden.

  • Cloud Firestore unterstützt Server-Clientbibliotheken für C#, Go, Java, Node.js, PHP, Python und Ruby. Verwenden Sie diese Clientbibliotheken, um privilegierte Serverumgebungen mit vollem Zugriff auf Ihre Datenbank einzurichten. Weitere Informationen zu diesen Bibliotheken finden Sie in der Kurzanleitung für Server-Clientbibliotheken.

Wenn Sie KI-Unterstützung wünschen, kopieren Sie den Prompt unten in Ihren KI-Coding-Agenten (z. B. Gemini in Android Studio, Antigravity, Claude Code, Codex und Cursor). Sie können den Prompt anpassen und mit Ihrem Agenten iterieren. Ausführliche Informationen zur Installation finden Sie unter Firebase-Agenten-Skills.

Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me set up and use Firebase for the backend of my app. Set up Firestore database in **Standard edition**. Help me to choose the best location for my database instance.

Cloud Firestore-Datenbank erstellen

  1. Falls noch nicht geschehen, erstellen Sie ein Firebase-Projekt: Klicken Sie in der Firebase Console auf Projekt hinzufügen und folgen Sie der Anleitung auf dem Bildschirm, um ein Firebase-Projekt zu erstellen oder Firebase-Dienste zu einem vorhandenen Google Cloud-Projekt hinzuzufügen.

  2. Gehen Sie im linken Bereich zu Datenbanken und Speicher > Firestore.

  3. Klicken Sie auf Datenbank erstellen.

  4. Wählen Sie einen Speicherort für Ihre Datenbank aus.

    Wenn Sie keinen Standort auswählen können, wurde der Standort für Standard-Google Cloud-Ressourcen Ihres Projekts bereits festgelegt. Einige Ressourcen Ihres Projekts (z. B. die Standardinstanz Cloud Firestore) haben eine gemeinsame Standortabhängigkeit. Ihr Standort kann entweder beim Erstellen des Projekts oder beim Einrichten eines anderen Dienstes festgelegt werden, der diese Standortabhängigkeit teilt.

  5. Wähle einen Startmodus für dein Cloud Firestore Security Rules aus:

    Testmodus

    Gut für den Einstieg in die mobilen und Web-Clientbibliotheken, aber jeder kann Ihre Daten lesen und überschreiben. Lesen Sie nach dem Testen den Abschnitt Daten schützen.

    Wählen Sie den Testmodus aus, um mit dem Web-, Apple-Plattform- oder Android-SDK zu beginnen.

    Produktionsmodus

    Verweigert alle Lese- und Schreibvorgänge von Mobil- und Webclients. Ihre authentifizierten Anwendungsserver (C#, Go, Java, Node.js, PHP, Python oder Ruby) können weiterhin auf Ihre Datenbank zugreifen.

    Wählen Sie den Produktionsmodus aus, um mit der Server-Clientbibliothek für C#, Go, Java, Node.js, PHP, Python oder Ruby zu beginnen.

    Ihre anfänglichen Cloud Firestore Security Rules gelten für Ihre Standarddatenbank Cloud Firestore. Wenn Sie mehrere Datenbanken für Ihr Projekt erstellen, können Sie Cloud Firestore Security Rules für jede Datenbank bereitstellen.

  6. Klicken Sie auf Erstellen.

Wenn Sie Cloud Firestore aktivieren, wird die API auch im Cloud API Manager aktiviert.

Entwicklungsumgebung einrichten

Fügen Sie Ihrer Anwendung die erforderlichen Abhängigkeiten und Clientbibliotheken hinzu.

Web

  1. Folgen Sie der Anleitung, um Firebase zu Ihrer Web-App hinzuzufügen.
  2. Das Cloud Firestore SDK ist als npm-Paket verfügbar.
    npm install firebase@13.0.0 --save
    Sie müssen sowohl Firebase als auch Cloud Firestore importieren.
    import { initializeApp } from "firebase/app";
    import { getFirestore } from "firebase/firestore";

Web

  1. Folgen Sie der Anleitung, um Firebase zu Ihrer Web-App hinzuzufügen.
  2. Fügen Sie Ihrer App die Firebase- und Cloud Firestore-Bibliotheken hinzu:
    <script src="https://www.gstatic.com/firebasejs/13.0.0/firebase-app-compat.js"></script>
    <script src="https://www.gstatic.com/firebasejs/13.0.0/firebase-firestore-compat.js"></script>
    Das Cloud Firestore SDK ist auch als npm-Paket verfügbar.
    npm install firebase@13.0.0 --save
    Sie müssen sowohl Firebase als auch Cloud Firestore manuell anfordern.
    import firebase from "firebase/compat/app";
    // Required for side-effects
    import "firebase/firestore";
iOS+

Folgen Sie der Anleitung, um Firebase zu Ihrer Apple-App hinzuzufügen.

Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.

  1. Öffnen Sie Ihr App-Projekt und gehen Sie in Xcode zu File > Swift Packages > Add Package Dependency (Datei > Swift-Pakete > Paketabhängigkeit hinzufügen).
  2. Fügen Sie bei entsprechender Aufforderung das Firebase Apple Platforms SDK-Repository hinzu:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. Wählen Sie die Firestore-Bibliothek aus.
  5. Wenn Sie fertig, beginnt Xcode automatisch, Ihre Abhängigkeiten im Hintergrund aufzulösen und herunterzuladen.
Android
  1. Folgen Sie der Anleitung unter Firebase zu meiner Android-Anwendung hinzufügen.
  2. Deklarieren Sie mit der Firebase Android BoM die Abhängigkeit für die Cloud Firestore-Bibliothek für Android in der Gradle-Datei Ihres Moduls (auf App-Ebene) (normalerweise app/build.gradle.kts oder app/build.gradle).
    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.1"))
    
        // Declare the dependency for the Cloud Firestore library
        // When using the BoM, you don't specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-firestore")
    }

    Mit der Firebase Android BoM haben Sie immer eine kompatible Version der Firebase Android-Bibliotheken in Ihrer App.

    (Alternative) Firebase-Bibliotheksabhängigkeiten ohne Verwendung der BoM deklarieren

    Wenn Sie die Firebase BoM nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in der entsprechenden Abhängigkeitszeile angeben.

    Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die BoM zur Verwaltung der Bibliotheksversionen zu verwenden. So wird sichergestellt, dass alle Versionen kompatibel sind.

    dependencies {
        // Declare the dependency for the Cloud Firestore library
        // When NOT using the BoM, you must specify versions in Firebase library dependencies
        implementation("com.google.firebase:firebase-firestore:27.0.0")
    }

    Suchen Sie nach einem Kotlin-spezifischen Bibliotheksmodul? Seit dem Release im Oktober 2023 können sowohl Kotlin- als auch Java-Entwickler das Hauptbibliotheksmodul verwenden. Weitere Informationen finden Sie in den FAQs zu dieser Initiative.

Dart

  1. Falls noch nicht geschehen, konfigurieren und initialisieren Sie Firebase in Ihrer Flutter-App.
  2. Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das Plug-in zu installieren:
    flutter pub add cloud_firestore
  3. Erstellen Sie anschließend Ihre Flutter-Anwendung neu:
    flutter run
  4. Optional: Sie können die Build-Zeiten für iOS und macOS verbessern, indem Sie das vorkompilierte Framework einbinden.

    Derzeit ist das Firestore SDK für iOS von Code abhängig, dessen Erstellung in Xcode mehr als 5 Minuten dauern kann. Wenn Sie die Build-Zeiten erheblich verkürzen möchten, können Sie eine vorkompilierte Version verwenden. Fügen Sie dazu die folgende Zeile in den target 'Runner' do-Block in Ihrem Podfile ein:

    target 'Runner' do
      use_frameworks!
      use_modular_headers!
    
      pod 'FirebaseFirestore',
        :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git',
        :tag => 'IOS_SDK_VERSION'
    
      flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__))
      target 'RunnerTests' do
        inherit! :search_paths
      end
    end

    Ersetzen Sie IOS_SDK_VERSION durch die Version des Firebase iOS SDK, die in der Datei firebase_sdk_version.rb von firebase_core angegeben ist. Wenn Sie nicht die aktuelle Version von firebase_core verwenden, suchen Sie diese Datei in Ihrem lokalen Pub-Paket-Cache (normalerweise ~/.pub-cache).

    Außerdem müssen Sie CocoaPods auf Version 1.9.1 oder höher aktualisieren:

    gem install cocoapods

    Weitere Informationen finden Sie im Problem auf GitHub.

C++
  1. Folgen Sie der Anleitung unter Firebase zu einem C++-Projekt hinzufügen.
  2. C++-Schnittstelle für Android.
    • Gradle-Abhängigkeiten. Fügen Sie der Gradle-Datei des Moduls (auf Anwendungsebene, in der Regel app/build.gradle) Folgendes hinzu:
              android.defaultConfig.externalNativeBuild.cmake {
                arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
              }
      
              apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
              firebaseCpp.dependencies {
                // earlier entries
                auth
                firestore
              }
              
    • Binäre Abhängigkeiten: Die empfohlene Methode zum Abrufen der binären Abhängigkeiten besteht darin, der Datei CMakeLists.txt Folgendes hinzuzufügen:
              add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL)
              set(firebase_libs firebase_auth firebase_firestore firebase_app)
              # Replace the target name below with the actual name of your target,
              # for example, "native-lib".
              target_link_libraries(${YOUR_TARGET_NAME_HERE} "${firebase_libs}")
              
  3. Informationen zum Einrichten der Desktopintegration finden Sie unter Firebase zu einem C++-Projekt hinzufügen.
Unity
  1. Folgen Sie der Anleitung unter Firebase zu einem Unity-Projekt hinzufügen.
  2. Konfigurieren Sie Ihr Projekt über die Unity-Oberfläche so, dass Android-Builds minimiert werden.
  3. Sie müssen den Build minimieren, um die Meldung Error while merging dex archives zu vermeiden.

    • Die Option finden Sie unter Player Settings > Android > Publishing Settings > Minify (Player-Einstellungen > Android > Veröffentlichungseinstellungen > Reduzieren).
    • Die Optionen können sich je nach Unity-Version unterscheiden. Weitere Informationen finden Sie in der offiziellen Unity-Dokumentation und im Firebase Unity Build Debug Guide.
    • Wenn die Anzahl der referenzierten Methoden nach der Aktivierung der Reduzierung immer noch das Limit überschreitet, können Sie multidex in
        aktivieren:
      • mainTemplate.gradle, wenn Custom Gradle Template (Benutzerdefinierte Gradle-Vorlage) unter Player Settings (Spielereinstellungen) aktiviert ist
      • oder die Datei build.gradle auf Modulebene, wenn Sie das exportierte Projekt mit Android Studio erstellen.

(Optional) Prototypen erstellen und mit Firebase Local Emulator Suite testen

Bevor wir uns damit beschäftigen, wie Ihre App Daten in Cloud Firestore schreibt und daraus liest, möchten wir Ihnen eine Reihe von Tools vorstellen, mit denen Sie Cloud Firestore-Funktionen prototypisieren und testen können: Firebase Local Emulator Suite. Wenn Sie verschiedene Datenmodelle ausprobieren, Ihre Sicherheitsregeln optimieren oder nach der kostengünstigsten Möglichkeit suchen, mit dem Backend zu interagieren, kann es eine gute Idee sein, lokal zu arbeiten, ohne Live-Dienste bereitzustellen.

Ein Cloud Firestore-Emulator ist Teil der Local Emulator Suite. Damit kann Ihre App mit Ihren emulierten Datenbankinhalten und ‑konfigurationen sowie optional mit Ihren emulierten Projektressourcen (Funktionen, andere Datenbanken und Sicherheitsregeln) interagieren.

Die Verwendung des Cloud Firestore-Emulators umfasst nur wenige Schritte:

  1. Fügen Sie der Testkonfiguration Ihrer App eine Codezeile hinzu, um eine Verbindung zum Emulator herzustellen.
  2. Führen Sie im Stammverzeichnis Ihres lokalen Projektverzeichnisses firebase emulators:start aus.
  3. Aufrufe aus dem Prototypcode Ihrer App mit einem Cloud Firestore-Plattform-SDK wie gewohnt ausführen.

Eine detaillierte Anleitung mit Cloud Firestore und Cloud Functions ist verfügbar. Sehen Sie sich auch die Einführung in Local Emulator Suite an.

Cloud Firestore initialisieren

Initialisieren Sie eine Instanz von Cloud Firestore:

Web

import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://support.google.com/firebase/answer/7015592
const firebaseConfig = {
    FIREBASE_CONFIGURATION
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);


// Initialize Cloud Firestore and get a reference to the service
const db = getFirestore(app);

Ersetzen Sie FIREBASE_CONFIGURATION durch die firebaseConfig Ihrer Webanwendung.

Informationen zum Speichern von Daten, wenn das Gerät die Verbindung verliert, finden Sie in der Dokumentation Offlinedaten aktivieren.

Web

import firebase from "firebase/app";
import "firebase/firestore";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://support.google.com/firebase/answer/7015592
const firebaseConfig = {
    FIREBASE_CONFIGURATION
};

// Initialize Firebase
firebase.initializeApp(firebaseConfig);


// Initialize Cloud Firestore and get a reference to the service
const db = firebase.firestore();

Ersetzen Sie FIREBASE_CONFIGURATION durch die firebaseConfig Ihrer Webanwendung.

Informationen zum Speichern von Daten, wenn das Gerät die Verbindung verliert, finden Sie in der Dokumentation Offlinedaten aktivieren.

Swift
Hinweis: Dieses Produkt nicht ist auf WatchOS- und App Clip-Zielen verfügbar.
import FirebaseCore
import FirebaseFirestore
FirebaseApp.configure()

let db = Firestore.firestore()
Objective-C
Hinweis: Dieses Produkt nicht ist auf WatchOS- und App Clip-Zielen verfügbar.
@import FirebaseCore;
@import FirebaseFirestore;

// Use Firebase library to configure APIs
[FIRApp configure];
  
FIRFirestore *defaultFirestore = [FIRFirestore firestore];

Kotlin

// Access a Cloud Firestore instance from your Activity
val db = Firebase.firestore

Java

// Access a Cloud Firestore instance from your Activity
FirebaseFirestore db = FirebaseFirestore.getInstance();

Dart

db = FirebaseFirestore.instance;
C++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance().
App::Create();
Firestore* db = Firestore::GetInstance();
Unity
using Firebase.Firestore;
using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;

Daten hinzufügen

Cloud Firestore speichert Daten in Dokumenten, die in Sammlungen gespeichert werden. Cloud Firestore erstellt Sammlungen und Dokumente implizit, wenn Sie dem Dokument zum ersten Mal Daten hinzufügen. Sie müssen Sammlungen oder Dokumente also nicht explizit anlegen.

Mit dem folgenden Beispielcode können Sie eine neue Sammlung und ein Dokument erstellen.

Web

import { collection, addDoc } from "firebase/firestore"; 

try {
  const docRef = await addDoc(collection(db, "users"), {
    first: "Ada",
    last: "Lovelace",
    born: 1815
  });
  console.log("Document written with ID: ", docRef.id);
} catch (e) {
  console.error("Error adding document: ", e);
}

Web

db.collection("users").add({
    first: "Ada",
    last: "Lovelace",
    born: 1815
})
.then((docRef) => {
    console.log("Document written with ID: ", docRef.id);
})
.catch((error) => {
    console.error("Error adding document: ", error);
});
Swift
Hinweis: Dieses Produkt nicht ist auf WatchOS- und App Clip-Zielen verfügbar.
// Add a new document with a generated ID
do {
  let ref = try await db.collection("users").addDocument(data: [
    "first": "Ada",
    "last": "Lovelace",
    "born": 1815
  ])
  print("Document added with ID: \(ref.documentID)")
} catch {
  print("Error adding document: \(error)")
}
Objective-C
Hinweis: Dieses Produkt nicht ist auf WatchOS- und App Clip-Zielen verfügbar.
// Add a new document with a generated ID
__block FIRDocumentReference *ref =
    [[self.db collectionWithPath:@"users"] addDocumentWithData:@{
      @"first": @"Ada",
      @"last": @"Lovelace",
      @"born": @1815
    } completion:^(NSError * _Nullable error) {
      if (error != nil) {
        NSLog(@"Error adding document: %@", error);
      } else {
        NSLog(@"Document added with ID: %@", ref.documentID);
      }
    }];

Kotlin

// Create a new user with a first and last name
val user = hashMapOf(
    "first" to "Ada",
    "last" to "Lovelace",
    "born" to 1815,
)

// Add a new document with a generated ID
db.collection("users")
    .add(user)
    .addOnSuccessListener { documentReference ->
        Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}")
    }
    .addOnFailureListener { e ->
        Log.w(TAG, "Error adding document", e)
    }

Java

// Create a new user with a first and last name
Map<String, Object> user = new HashMap<>();
user.put("first", "Ada");
user.put("last", "Lovelace");
user.put("born", 1815);

// Add a new document with a generated ID
db.collection("users")
        .add(user)
        .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
            @Override
            public void onSuccess(DocumentReference documentReference) {
                Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId());
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "Error adding document", e);
            }
        });

Dart

// Create a new user with a first and last name
final user = <String, dynamic>{
  "first": "Ada",
  "last": "Lovelace",
  "born": 1815
};

// Add a new document with a generated ID
db.collection("users").add(user).then((DocumentReference doc) =>
    print('DocumentSnapshot added with ID: ${doc.id}'));
C++
// Add a new document with a generated ID
Future<DocumentReference> user_ref =
    db->Collection("users").Add({{"first", FieldValue::String("Ada")},
                                 {"last", FieldValue::String("Lovelace")},
                                 {"born", FieldValue::Integer(1815)}});

user_ref.OnCompletion([](const Future<DocumentReference>& future) {
  if (future.error() == Error::kErrorOk) {
    std::cout << "DocumentSnapshot added with ID: " << future.result()->id()
              << std::endl;
  } else {
    std::cout << "Error adding document: " << future.error_message() << std::endl;
  }
});
Unity
DocumentReference docRef = db.Collection("users").Document("alovelace");
Dictionary<string, object> user = new Dictionary<string, object>
{
	{ "First", "Ada" },
	{ "Last", "Lovelace" },
	{ "Born", 1815 },
};
docRef.SetAsync(user).ContinueWithOnMainThread(task => {
	Debug.Log("Added data to the alovelace document in the users collection.");
});

Fügen Sie jetzt der Sammlung users ein weiteres Dokument hinzu. Beachten Sie, dass dieses Dokument ein Schlüssel/Wert-Paar (zweiter Vorname) enthält, das im ersten Dokument nicht auftaucht. Dokumente in einer Sammlung können unterschiedliche Informationen enthalten.

Web

// Add a second document with a generated ID.
import { addDoc, collection } from "firebase/firestore"; 

try {
  const docRef = await addDoc(collection(db, "users"), {
    first: "Alan",
    middle: "Mathison",
    last: "Turing",
    born: 1912
  });

  console.log("Document written with ID: ", docRef.id);
} catch (e) {
  console.error("Error adding document: ", e);
}

Web

// Add a second document with a generated ID.
db.collection("users").add({
    first: "Alan",
    middle: "Mathison",
    last: "Turing",
    born: 1912
})
.then((docRef) => {
    console.log("Document written with ID: ", docRef.id);
})
.catch((error) => {
    console.error("Error adding document: ", error);
});
Swift
Hinweis: Dieses Produkt nicht ist auf WatchOS- und App Clip-Zielen verfügbar.
// Add a second document with a generated ID.
do {
  let ref = try await db.collection("users").addDocument(data: [
    "first": "Alan",
    "middle": "Mathison",
    "last": "Turing",
    "born": 1912
  ])
  print("Document added with ID: \(ref.documentID)")
} catch {
  print("Error adding document: \(error)")
}
Objective-C
Hinweis: Dieses Produkt nicht ist auf WatchOS- und App Clip-Zielen verfügbar.
// Add a second document with a generated ID.
__block FIRDocumentReference *ref =
    [[self.db collectionWithPath:@"users"] addDocumentWithData:@{
      @"first": @"Alan",
      @"middle": @"Mathison",
      @"last": @"Turing",
      @"born": @1912
    } completion:^(NSError * _Nullable error) {
      if (error != nil) {
        NSLog(@"Error adding document: %@", error);
      } else {
        NSLog(@"Document added with ID: %@", ref.documentID);
      }
    }];

Kotlin

// Create a new user with a first, middle, and last name
val user = hashMapOf(
    "first" to "Alan",
    "middle" to "Mathison",
    "last" to "Turing",
    "born" to 1912,
)

// Add a new document with a generated ID
db.collection("users")
    .add(user)
    .addOnSuccessListener { documentReference ->
        Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}")
    }
    .addOnFailureListener { e ->
        Log.w(TAG, "Error adding document", e)
    }

Java

// Create a new user with a first, middle, and last name
Map<String, Object> user = new HashMap<>();
user.put("first", "Alan");
user.put("middle", "Mathison");
user.put("last", "Turing");
user.put("born", 1912);

// Add a new document with a generated ID
db.collection("users")
        .add(user)
        .addOnSuccessListener(new OnSuccessListener<DocumentReference>() {
            @Override
            public void onSuccess(DocumentReference documentReference) {
                Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId());
            }
        })
        .addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                Log.w(TAG, "Error adding document", e);
            }
        });

Dart

// Create a new user with a first and last name
final user = <String, dynamic>{
  "first": "Alan",
  "middle": "Mathison",
  "last": "Turing",
  "born": 1912
};

// Add a new document with a generated ID
db.collection("users").add(user).then((DocumentReference doc) =>
    print('DocumentSnapshot added with ID: ${doc.id}'));
C++
db->Collection("users")
    .Add({{"first", FieldValue::String("Alan")},
          {"middle", FieldValue::String("Mathison")},
          {"last", FieldValue::String("Turing")},
          {"born", FieldValue::Integer(1912)}})
    .OnCompletion([](const Future<DocumentReference>& future) {
      if (future.error() == Error::kErrorOk) {
        std::cout << "DocumentSnapshot added with ID: "
                  << future.result()->id() << std::endl;
      } else {
        std::cout << "Error adding document: " << future.error_message()
                  << std::endl;
      }
    });
Unity
DocumentReference docRef = db.Collection("users").Document("aturing");
Dictionary<string, object> user = new Dictionary<string, object>
{
	{ "First", "Alan" },
	{ "Middle", "Mathison" },
	{ "Last", "Turing" },
	{ "Born", 1912 }
};
docRef.SetAsync(user).ContinueWithOnMainThread(task => {
	Debug.Log("Added data to the aturing document in the users collection.");
});

Daten lesen

Mit dem Daten-Viewer in der Firebase Console können Sie schnell prüfen, ob Sie Daten zu Cloud Firestore hinzugefügt haben.

Sie können auch die Methode „get“ verwenden, um die gesamte Sammlung abzurufen.

Web

import { collection, getDocs } from "firebase/firestore"; 

const querySnapshot = await getDocs(collection(db, "users"));
querySnapshot.forEach((doc) => {
  console.log(doc.id, "=>", doc.data());
});

Web

db.collection("users").get().then((querySnapshot) => {
    querySnapshot.forEach((doc) => {
        console.log(doc.id, "=>", doc.data());
    });
});
Swift
Hinweis: Dieses Produkt nicht ist auf WatchOS- und App Clip-Zielen verfügbar.
do {
  let snapshot = try await db.collection("users").getDocuments()
  for document in snapshot.documents {
    print("\(document.documentID) => \(document.data())")
  }
} catch {
  print("Error getting documents: \(error)")
}
Objective-C
Hinweis: Dieses Produkt nicht ist auf WatchOS- und App Clip-Zielen verfügbar.
[[self.db collectionWithPath:@"users"]
    getDocumentsWithCompletion:^(FIRQuerySnapshot * _Nullable snapshot,
                                 NSError * _Nullable error) {
      if (error != nil) {
        NSLog(@"Error getting documents: %@", error);
      } else {
        for (FIRDocumentSnapshot *document in snapshot.documents) {
          NSLog(@"%@ => %@", document.documentID, document.data);
        }
      }
    }];

Kotlin

db.collection("users")
    .get()
    .addOnSuccessListener { result ->
        for (document in result) {
            Log.d(TAG, "${document.id} => ${document.data}")
        }
    }
    .addOnFailureListener { exception ->
        Log.w(TAG, "Error getting documents.", exception)
    }

Java

db.collection("users")
        .get()
        .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() {
            @Override
            public void onComplete(@NonNull Task<QuerySnapshot> task) {
                if (task.isSuccessful()) {
                    for (QueryDocumentSnapshot document : task.getResult()) {
                        Log.d(TAG, document.getId() + " => " + document.getData());
                    }
                } else {
                    Log.w(TAG, "Error getting documents.", task.getException());
                }
            }
        });

Dart

await db.collection("users").get().then((event) {
  for (var doc in event.docs) {
    print("${doc.id} => ${doc.data()}");
  }
});
C++
Future<QuerySnapshot> users = db->Collection("users").Get();
users.OnCompletion([](const Future<QuerySnapshot>& future) {
  if (future.error() == Error::kErrorOk) {
    for (const DocumentSnapshot& document : future.result()->documents()) {
      std::cout << document << std::endl;
    }
  } else {
    std::cout << "Error getting documents: " << future.error_message()
              << std::endl;
  }
});
Unity
CollectionReference usersRef = db.Collection("users");
usersRef.GetSnapshotAsync().ContinueWithOnMainThread(task =>
{
  QuerySnapshot snapshot = task.Result;
  foreach (DocumentSnapshot document in snapshot.Documents)
  {
    Debug.Log(String.Format("User: {0}", document.Id));
    Dictionary<string, object> documentDictionary = document.ToDictionary();
    Debug.Log(String.Format("First: {0}", documentDictionary["First"]));
    if (documentDictionary.ContainsKey("Middle"))
    {
      Debug.Log(String.Format("Middle: {0}", documentDictionary["Middle"]));
    }

    Debug.Log(String.Format("Last: {0}", documentDictionary["Last"]));
    Debug.Log(String.Format("Born: {0}", documentDictionary["Born"]));
  }

  Debug.Log("Read all data from the users collection.");
});

Daten schützen

Wenn Sie das SDK für Web-, Android- oder Apple-Plattformen verwenden, nutzen Sie Firebase Authentication und Cloud Firestore Security Rules, um Ihre Daten in Cloud Firestore zu schützen.

Hier sind einige grundlegende Regelsätze, die Sie für den Einstieg verwenden können. Sie können Ihre Sicherheitsregeln in der Firebase Console auf dem Tab Datenbanken und Speicher > Firestore > Regeln ändern.

Auth erforderlich

// Allow read/write access to a document keyed by the user's UID
service cloud.firestore {
  match /databases/{database}/documents {
    match /users/{uid} {
      allow read, write: if request.auth != null && request.auth.uid == uid;
    }
  }
}

Produktionsmodus

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

Bevor Sie Ihre Web-, Android- oder iOS-App in der Produktion bereitstellen, sollten Sie außerdem dafür sorgen, dass nur Ihre App-Clients auf Ihre Cloud Firestore-Daten zugreifen können. Weitere Informationen finden Sie in der App Check-Dokumentation.

Wenn Sie eines der Server-SDKs verwenden, können Sie Ihre Daten in Cloud Firestore mit Identity and Access Management (IAM) schützen.

Videoanleitung ansehen

Eine ausführliche Anleitung zu den ersten Schritten mit den mobilen Clientbibliotheken von Cloud Firestore finden Sie in den folgenden Videoanleitungen:

Web
iOS+
Android

Weitere Videos finden Sie im Firebase-YouTube-Kanal.

Weitere Informationen

Vertiefen Sie Ihr Wissen mit folgenden Themen:

  • Codelabs: In den Codelabs für Android, iOS und das Web erfahren Sie, wie Sie Cloud Firestore in einer echten App verwenden.
  • Datenmodell: Hier erfahren Sie mehr darüber, wie Daten in Cloud Firestore strukturiert sind, einschließlich hierarchischer Daten und Untersammlungen.
  • Daten hinzufügen: Weitere Informationen zum Erstellen und Aktualisieren von Daten in Cloud Firestore.
  • Daten abrufen – Erfahren Sie mehr über das Abrufen von Daten.
  • Einfache und komplexe Abfragen ausführen — Erfahren Sie, wie Sie einfache und komplexe Abfragen ausführen.
  • Abfragen sortieren und begrenzen: Hier erfahren Sie, wie Sie die von Ihren Abfragen zurückgegebenen Daten sortieren und begrenzen.
  • Firebase-Agenten-Skills: Hier erfahren Sie, wie Sie Ihre KI-Entwicklungstools optimieren, um Aufgaben effektiver auszuführen, und wie Sie Best Practices für Cloud Firestore anwenden (z. B. das Schreiben von Cloud Firestore Security Rules).