Erste Schritte mit Cloud Firestore

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

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 für ein vorhandenes Google Cloud-Projekt hinzuzufügen.

  2. Öffnen Sie Ihr Projekt in der Firebase Console. Maximieren Sie im linken Bereich Build und wählen Sie dann Firestore-Datenbank aus.

  3. Klicken Sie auf Datenbank erstellen.

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

    Wenn Sie keinen Speicherort auswählen können, wurde der Speicherort für standardmäßige Google Cloud-Ressourcen für Ihr Projekt bereits festgelegt. Einige Ressourcen Ihres Projekts (z. B. die Standardinstanz von Cloud Firestore) teilen sich eine gemeinsame Standortabhängigkeit. Der Standort kann entweder während der Projekterstellung oder beim Einrichten eines anderen Dienstes festgelegt werden, der diese Standortabhängigkeit teilt.

  5. Wählen Sie einen Startmodus für Ihre Cloud Firestore Security Rules aus:

    Testmodus

    Gut für die ersten Schritte mit den Mobil- und Web-Clientbibliotheken geeignet, ermöglicht jedoch jedem, Ihre Daten zu lesen und zu überschreiben. Lesen Sie nach dem Testen den Abschnitt Daten schützen.

    Wenn Sie mit dem Web, Apple-Plattformen oder dem Android SDK beginnen möchten, wählen Sie den Testmodus aus.

    Sperrmodus

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

    Wenn Sie mit der C#-, Go-, Java-, Node.js-, PHP-, Python- oder Ruby-Server-Clientbibliothek beginnen möchten, wählen Sie den gesperrten Modus aus.

    Die ersten Cloud Firestore Security Rules werden auf Ihre Standarddatenbank Cloud Firestore angewendet. 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 auch die API 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 unter Firebase zu meiner Webanwendung hinzufügen.
  2. Fügen Sie Ihrer Anwendung die Firebase- und Cloud Firestore-Bibliotheken hinzu:
    <script src="https://www.gstatic.com/firebasejs/11.0.2/firebase-app-compat.js"></script>
    <script src="https://www.gstatic.com/firebasejs/11.0.2/firebase-firestore-compat.js"></script>
    Das Cloud Firestore SDK ist auch als NPM-Paket verfügbar.
    npm install firebase@11.0.2 --save
    Sie müssen Firebase und Cloud Firestore manuell anfordern.
    import firebase from "firebase/compat/app";
    // Required for side-effects
    import "firebase/firestore";

Web

  1. Folgen Sie der Anleitung unter Firebase zu meiner Webanwendung hinzufügen.
  2. Das Cloud Firestore SDK ist als NPM-Paket verfügbar.
    npm install firebase@11.0.2 --save
    Sie müssen sowohl Firebase als auch Cloud Firestore importieren.
    import { initializeApp } from "firebase/app";
    import { getFirestore } from "firebase/firestore";
iOS+

Folgen Sie der Anleitung unter Firebase zu meiner Apple-Anwendung hinzufü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 mithilfe der Firebase Android BoM die Abhängigkeit für die Cloud Firestore-Bibliothek für Android in der Gradle-Datei des Moduls (auf App-Ebene) (in der Regel app/build.gradle.kts oder app/build.gradle).
    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:33.6.0"))
    
        // 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 BoM deklarieren

    Wenn Sie 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 Ihnen dringend, die Bibliotheksversionen mithilfe der BoM zu verwalten. 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:25.1.1")
    }

    Sie suchen nach einem Kotlin-spezifischen Bibliotheksmodul? Ab dem Release Oktober 2023 können sich sowohl Kotlin- als auch Java-Entwickler auf das Modul der Hauptbibliothek verlassen. 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: Verbessern Sie die Build-Zeiten für iOS und macOS, indem Sie das vorab kompilierte Framework einschließen.

    Derzeit ist das Firestore SDK für iOS von Code abhängig, dessen Erstellung in Xcode mehr als fünf Minuten dauern kann. Sie können die Buildzeit erheblich verkürzen, indem Sie eine vorkompilierte Version verwenden. Fügen Sie dazu diese Zeile dem target 'Runner' do-Block in Ihrer Podfile hinzu:

    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 neueste Version von firebase_core verwenden, suchen Sie diese Datei in Ihrem lokalen Pub-Paketcache (normalerweise ~/.pub-cache).

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

    gem install cocoapods

    Weitere Informationen findest du im Artikel zu diesem Problem auf GitHub.

Java
  1. Fügen Sie Ihrer App das Firebase Admin SDK hinzu:
    • Mit Gradle:
      compile 'com.google.firebase:firebase-admin:1.32.0'
    • Mit Maven:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>1.32.0</version>
      </dependency>
           
  2. Folgen Sie der Anleitung unten, um Cloud Firestore mit den richtigen Anmeldedaten in Ihrer Umgebung zu initialisieren.
Python
  1. Fügen Sie Ihrer Python-App das Firebase Admin SDK hinzu:
    pip install --upgrade firebase-admin
  2. Folgen Sie der Anleitung unten, um Cloud Firestore mit den richtigen Anmeldedaten in Ihrer Umgebung zu initialisieren.
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-Benutzeroberfläche so, dass Android-Builds minimiert werden.
  3. Sie müssen den Build minimieren, um die Meldung Error while merging dex archives zu vermeiden.

    • Du findest die Option unter Player-Einstellungen > Android > Einstellungen für die Veröffentlichung > Minimieren.
    • Die Optionen können sich in verschiedenen Unity-Versionen unterscheiden. Weitere Informationen finden Sie in der offiziellen Unity-Dokumentation und im Debug-Leitfaden für Firebase Unity-Builds.
    • Wenn nach dem Aktivieren der Reduzierung die Anzahl der Methoden, auf die verwiesen wird, das Limit weiterhin überschreitet, können Sie multidex auch in folgenden Fällen aktivieren:
      • mainTemplate.gradle, wenn Benutzerdefinierte Gradle-Vorlage unter Player-Einstellungen aktiviert ist
      • oder die build.gradle-Datei auf Modulebene, wenn Sie das exportierte Projekt mit Android Studio erstellen.
Node.js
  1. Fügen Sie Ihrer App das Firebase Admin SDK hinzu:
    npm install firebase-admin --save
  2. Folgen Sie der Anleitung unten, um Cloud Firestore mit den richtigen Anmeldedaten in Ihrer Umgebung zu initialisieren.
Go
  1. So fügen Sie Ihrer Go-App das Firebase Admin SDK hinzu:
    go get firebase.google.com/go
  2. Folgen Sie der Anleitung unten, um Cloud Firestore mit den richtigen Anmeldedaten in Ihrer Umgebung zu initialisieren.
PHP
  1. Die Cloud Firestore-Server-Clientbibliotheken (Java, Node.js, Python, Go, PHP, C# und Ruby) verwenden für die Authentifizierung die Standardanmeldedaten für Google-Anwendungen.
    • Wenn Sie sich über Ihre Entwicklungsumgebung authentifizieren möchten, legen Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS so fest, dass sie auf eine JSON-Datei mit dem Dienstkontoschlüssel verweist. Auf der Seite "Anmeldedaten" der API Console können Sie eine Schlüsseldatei erstellen.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • In Ihrer Produktionsumgebung müssen Sie sich nicht authentifizieren, wenn Sie Ihre Anwendung in der App Engine oder Compute Engine mit demselben Projekt ausführen, das Sie für Cloud Firestore verwenden. Andernfalls richten Sie ein Dienstkonto ein.
  2. Installieren und aktivieren Sie die gRPC-Erweiterung für PHP. Diese benötigen Sie für die Nutzung der Clientbibliothek.
  3. Fügen Sie Ihrer Anwendung die Cloud Firestore-PHP-Bibliothek hinzu:
    composer require google/cloud-firestore
C#
  1. Die Cloud Firestore-Server-Clientbibliotheken (Java, Node.js, Python, Go, PHP, C# und Ruby) verwenden für die Authentifizierung die Standardanmeldedaten für Google-Anwendungen.
    • Wenn Sie sich über Ihre Entwicklungsumgebung authentifizieren möchten, legen Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS so fest, dass sie auf eine JSON-Datei mit dem Dienstkontoschlüssel verweist. Sie können eine Schlüsseldatei auf der Seite „Anmeldedaten“ der API Console erstellen.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • In Ihrer Produktionsumgebung müssen Sie sich nicht authentifizieren, wenn Sie Ihre Anwendung in App Engine oder Compute Engine mit demselben Projekt ausführen, das Sie für Cloud Firestore verwenden. Andernfalls richten Sie ein Dienstkonto ein.
  2. Fügen Sie Ihrer Anwendung in der .csproj-Datei die Cloud Firestore-C#-Bibliothek hinzu:
    <ItemGroup>
      <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" />
    </ItemGroup>
  3. Fügen Sie der Datei Program.cs Folgendes hinzu:
    using Google.Cloud.Firestore;
Ruby
  1. Die Cloud Firestore-Server-Clientbibliotheken (Java, Node.js, Python, Go, PHP, C# und Ruby) verwenden für die Authentifizierung die Standardanmeldedaten für Google-Anwendungen.
    • Für die Authentifizierung in der Entwicklungsumgebung legen Sie die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS so fest, dass sie auf eine JSON-Dienstkontoschlüsseldatei verweist. Sie können eine Schlüsseldatei auf der Seite „Anmeldedaten“ der API Console erstellen.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • In Ihrer Produktionsumgebung müssen Sie sich nicht authentifizieren, wenn Sie Ihre Anwendung in App Engine oder Compute Engine mit demselben Projekt ausführen, das Sie für Cloud Firestore verwenden. Andernfalls richten Sie ein Dienstkonto ein.
  2. Fügen Sie Ihrer Anwendung in der Gemfile die Cloud Firestore Ruby-Bibliothek hinzu:
    gem "google-cloud-firestore"
  3. Installieren Sie Abhängigkeiten aus der Gemfile-Datei mit folgendem Befehl:
    bundle install

Optional: Prototyp erstellen und mit Firebase Local Emulator Suite testen

Bevor wir uns damit befassen, wie Ihre App Daten in Cloud Firestore schreibt und daraus liest, möchten wir Ihnen einige 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 die kostengünstigste Möglichkeit zur Interaktion mit dem Back-End finden möchten, kann es sehr hilfreich sein, lokal arbeiten zu können, ohne Live-Dienste bereitzustellen.

Ein Cloud Firestore-Emulator ist Teil des Local Emulator Suite. Er ermöglicht es Ihrer App, mit den emulierten Datenbankinhalten und der emulierten Konfiguration sowie optional mit den emulierten Projektressourcen (Funktionen, anderen Datenbanken und Sicherheitsregeln) zu interagieren.

Die Verwendung des Cloud Firestore-Emulators ist ganz einfach:

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

Eine detaillierte Schritt-für-Schritt-Anleitung zu Cloud Firestore und Cloud Functions findest du. Sehen Sie sich auch die Local Emulator SuiteEinführung 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 dauerhaften Sichern von Daten für den Fall, dass die Verbindung des Geräts unterbrochen wird, 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.

Wie Sie die Daten auch dann erhalten, wenn die Verbindung des Geräts unterbrochen wird, erfahren 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+KTX

// 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;
Java
Das Cloud Firestore SDK wird je nach Umgebung unterschiedlich initialisiert. Im Folgenden sind die gängigsten Methoden aufgeführt. Eine vollständige Referenz finden Sie unter Admin SDK initialisieren.
  • Am Google Cloud initialisieren
    import com.google.auth.oauth2.GoogleCredentials;
    import com.google.cloud.firestore.Firestore;
    
    import com.google.firebase.FirebaseApp;
    import com.google.firebase.FirebaseOptions;
    
    // Use the application default credentials
    GoogleCredentials credentials = GoogleCredentials.getApplicationDefault();
    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(credentials)
        .setProjectId(projectId)
        .build();
    FirebaseApp.initializeApp(options);
    
    Firestore db = FirestoreClient.getFirestore();
  • Auf eigenem Server initialisieren

    Wenn Sie das Firebase Admin SDK auf Ihrem eigenen Server verwenden möchten, verwenden Sie ein Dienstkonto.

    Gehen Sie in der Google Cloud Console zu IAM & Verwaltung > Dienstkonten. Generieren Sie einen neuen privaten Schlüssel und speichern Sie die JSON-Datei. Initialisieren Sie dann das SDK mit der Datei:

    import com.google.auth.oauth2.GoogleCredentials;
    import com.google.cloud.firestore.Firestore;
    
    import com.google.firebase.FirebaseApp;
    import com.google.firebase.FirebaseOptions;
    
    // Use a service account
    InputStream serviceAccount = new FileInputStream("path/to/serviceAccount.json");
    GoogleCredentials credentials = GoogleCredentials.fromStream(serviceAccount);
    FirebaseOptions options = new FirebaseOptions.Builder()
        .setCredentials(credentials)
        .build();
    FirebaseApp.initializeApp(options);
    
    Firestore db = FirestoreClient.getFirestore();
  • Python
    Das Cloud Firestore SDK wird je nach Umgebung unterschiedlich initialisiert. Im Folgenden finden Sie die gängigsten Methoden. Eine vollständige Referenz finden Sie unter Admin SDK initialisieren.
  • Am Google Cloud initialisieren
    import firebase_admin
    from firebase_admin import firestore
    
    # Application Default credentials are automatically created.
    app = firebase_admin.initialize_app()
    db = firestore.client()

    Das SDK kann auch mit vorhandenen Standardanmeldedaten für Anwendungen initialisiert werden.

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore
    
    # Use the application default credentials.
    cred = credentials.ApplicationDefault()
    
    firebase_admin.initialize_app(cred)
    db = firestore.client()
  • Auf eigenem Server initialisieren

    Verwenden Sie ein Dienstkonto, um das Firebase Admin SDK auf Ihrem eigenen Server zu verwenden.

    Gehen Sie in der Google Cloud Console zu IAM & Verwaltung > Dienstkonten. Generieren Sie einen neuen privaten Schlüssel und speichern Sie die JSON-Datei. Verwenden Sie dann die Datei, um das SDK zu initialisieren:

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore
    
    # Use a service account.
    cred = credentials.Certificate('path/to/serviceAccount.json')
    
    app = firebase_admin.initialize_app(cred)
    
    db = firestore.client()
  • Python

    Das Cloud Firestore SDK wird je nach Umgebung unterschiedlich initialisiert. Im Folgenden sind die gängigsten Methoden aufgeführt. Eine vollständige Referenz finden Sie unter Admin SDK initialisieren.
  • Am Google Cloud initialisieren
    import firebase_admin
    from firebase_admin import firestore_async
    
    # Application Default credentials are automatically created.
    app = firebase_admin.initialize_app()
    db = firestore_async.client()

    Das SDK kann auch mit vorhandenen Standardanmeldedaten für Anwendungen initialisiert werden.

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore_async
    
    # Use the application default credentials.
    cred = credentials.ApplicationDefault()
    
    firebase_admin.initialize_app(cred)
    db = firestore_async.client()
  • Auf dem eigenen Server initialisieren

    Wenn Sie das Firebase Admin SDK auf Ihrem eigenen Server verwenden möchten, verwenden Sie ein Dienstkonto.

    Rufen Sie in der Google Cloud Console IAM & Verwaltung > Dienstkonten auf. Generieren Sie einen neuen privaten Schlüssel und speichern Sie die JSON-Datei. Initialisieren Sie dann das SDK mit der Datei:

    import firebase_admin
    from firebase_admin import credentials
    from firebase_admin import firestore_async
    
    # Use a service account.
    cred = credentials.Certificate('path/to/serviceAccount.json')
    
    app = firebase_admin.initialize_app(cred)
    
    db = firestore_async.client()
  • C++
    // Make sure the call to `Create()` happens some time before you call Firestore::GetInstance().
    App::Create();
    Firestore* db = Firestore::GetInstance();
    Node.js
    Das Cloud Firestore SDK wird je nach Umgebung unterschiedlich initialisiert. Im Folgenden sind die gängigsten Methoden aufgeführt. Eine vollständige Referenz finden Sie unter Admin SDK initialisieren.
    • Am Cloud Functions initialisieren
      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
      initializeApp();
      
      const db = getFirestore();
      
    • Am Google Cloud initialisieren
      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
      initializeApp({
        credential: applicationDefault()
      });
      
      const db = getFirestore();
    • Auf dem eigenen Server initialisieren

      Wenn Sie das Firebase Admin SDK auf Ihrem eigenen Server (oder in einer anderen Node.js-Umgebung) verwenden möchten, verwenden Sie ein Dienstkonto. Klicken Sie in der Google Cloud Console auf IAM & Verwaltung > Dienstkonten. Generieren Sie einen neuen privaten Schlüssel und speichern Sie die JSON-Datei. Initialisieren Sie dann das SDK mit der Datei:

      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
      const serviceAccount = require('./path/to/serviceAccountKey.json');
      
      initializeApp({
        credential: cert(serviceAccount)
      });
      
      const db = getFirestore();
      
    Go
    Das Cloud Firestore SDK wird je nach Umgebung auf unterschiedliche Weise initialisiert. Im Folgenden finden Sie die gängigsten Methoden. Eine vollständige Referenz finden Sie unter Admin SDK initialisieren.
  • Am Google Cloud initialisieren
    import (
      "log"
    
      firebase "firebase.google.com/go"
      "google.golang.org/api/option"
    )
    
    // Use the application default credentials
    ctx := context.Background()
    conf := &firebase.Config{ProjectID: projectID}
    app, err := firebase.NewApp(ctx, conf)
    if err != nil {
      log.Fatalln(err)
    }
    
    client, err := app.Firestore(ctx)
    if err != nil {
      log.Fatalln(err)
    }
    defer client.Close()
  • Auf eigenem Server initialisieren

    Wenn Sie das Firebase Admin SDK auf Ihrem eigenen Server verwenden möchten, verwenden Sie ein Dienstkonto.

    Gehen Sie in der Google Cloud Console zu IAM & Verwaltung > Dienstkonten. Generieren Sie einen neuen privaten Schlüssel und speichern Sie die JSON-Datei. Initialisieren Sie dann das SDK mit der Datei:

    import (
      "log"
    
      firebase "firebase.google.com/go"
      "google.golang.org/api/option"
    )
    
    // Use a service account
    ctx := context.Background()
    sa := option.WithCredentialsFile("path/to/serviceAccount.json")
    app, err := firebase.NewApp(ctx, nil, sa)
    if err != nil {
      log.Fatalln(err)
    }
    
    client, err := app.Firestore(ctx)
    if err != nil {
      log.Fatalln(err)
    }
    defer client.Close()
  • PHP

    PHP

    Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken.

    use Google\Cloud\Firestore\FirestoreClient;
    
    /**
     * Initialize Cloud Firestore with default project ID.
     */
    function setup_client_create(string $projectId = null)
    {
        // Create the Cloud Firestore client
        if (empty($projectId)) {
            // The `projectId` parameter is optional and represents which project the
            // client will act on behalf of. If not supplied, the client falls back to
            // the default project inferred from the environment.
            $db = new FirestoreClient();
            printf('Created Cloud Firestore client with default project ID.' . PHP_EOL);
        } else {
            $db = new FirestoreClient([
                'projectId' => $projectId,
            ]);
            printf('Created Cloud Firestore client with project ID: %s' . PHP_EOL, $projectId);
        }
    }
    Einheit
    using Firebase.Firestore;
    using Firebase.Extensions;
    FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
    C#

    C#

    Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken.

    FirestoreDb db = FirestoreDb.Create(project);
    Console.WriteLine("Created Cloud Firestore client with project ID: {0}", project);
    Ruby
    require "google/cloud/firestore"
    
    # The `project_id` parameter is optional and represents which project the
    # client will act on behalf of. If not supplied, the client falls back to the
    # default project inferred from the environment.
    firestore = Google::Cloud::Firestore.new project_id: project_id
    
    puts "Created Cloud Firestore client with given project ID."

    Daten hinzufügen

    In Cloud Firestore werden Daten in Dokumenten gespeichert, die wiederum in Sammlungen gespeichert sind. Mit Cloud Firestore werden Sammlungen und Dokumente implizit erstellt, 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+KTX

    // 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}'));
    Java
    DocumentReference docRef = db.collection("users").document("alovelace");
    // Add document data  with id "alovelace" using a hashmap
    Map<String, Object> data = new HashMap<>();
    data.put("first", "Ada");
    data.put("last", "Lovelace");
    data.put("born", 1815);
    //asynchronously write data
    ApiFuture<WriteResult> result = docRef.set(data);
    // ...
    // result.get() blocks on response
    System.out.println("Update time : " + result.get().getUpdateTime());
    Python
    doc_ref = db.collection("users").document("alovelace")
    doc_ref.set({"first": "Ada", "last": "Lovelace", "born": 1815})

    Python

    doc_ref = db.collection("users").document("alovelace")
    await doc_ref.set({"first": "Ada", "last": "Lovelace", "born": 1815})
    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;
      }
    });
    Node.js
    const docRef = db.collection('users').doc('alovelace');
    
    await docRef.set({
      first: 'Ada',
      last: 'Lovelace',
      born: 1815
    });
    Go
    _, _, err := client.Collection("users").Add(ctx, map[string]interface{}{
    	"first": "Ada",
    	"last":  "Lovelace",
    	"born":  1815,
    })
    if err != nil {
    	log.Fatalf("Failed adding alovelace: %v", err)
    }
    PHP

    PHP

    Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken.

    $docRef = $db->collection('samples/php/users')->document('alovelace');
    $docRef->set([
        'first' => 'Ada',
        'last' => 'Lovelace',
        'born' => 1815
    ]);
    printf('Added data to the lovelace document in the users collection.' . PHP_EOL);
    Einheit
    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.");
    });
    C#
    DocumentReference docRef = db.Collection("users").Document("alovelace");
    Dictionary<string, object> user = new Dictionary<string, object>
    {
        { "First", "Ada" },
        { "Last", "Lovelace" },
        { "Born", 1815 }
    };
    await docRef.SetAsync(user);
    Ruby
    doc_ref = firestore.doc "#{collection_path}/alovelace"
    
    doc_ref.set(
      {
        first: "Ada",
        last:  "Lovelace",
        born:  1815
      }
    )
    
    puts "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+KTX

    // 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}'));
    Java
    DocumentReference docRef = db.collection("users").document("aturing");
    // Add document data with an additional field ("middle")
    Map<String, Object> data = new HashMap<>();
    data.put("first", "Alan");
    data.put("middle", "Mathison");
    data.put("last", "Turing");
    data.put("born", 1912);
    
    ApiFuture<WriteResult> result = docRef.set(data);
    System.out.println("Update time : " + result.get().getUpdateTime());
    Python
    doc_ref = db.collection("users").document("aturing")
    doc_ref.set({"first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912})

    Python

    doc_ref = db.collection("users").document("aturing")
    await doc_ref.set(
        {"first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912}
    )
    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;
          }
        });
    Node.js
    const aTuringRef = db.collection('users').doc('aturing');
    
    await aTuringRef.set({
      'first': 'Alan',
      'middle': 'Mathison',
      'last': 'Turing',
      'born': 1912
    });
    Go
    _, _, err = client.Collection("users").Add(ctx, map[string]interface{}{
    	"first":  "Alan",
    	"middle": "Mathison",
    	"last":   "Turing",
    	"born":   1912,
    })
    if err != nil {
    	log.Fatalf("Failed adding aturing: %v", err)
    }
    PHP

    PHP

    Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken.

    $docRef = $db->collection('samples/php/users')->document('aturing');
    $docRef->set([
        'first' => 'Alan',
        'middle' => 'Mathison',
        'last' => 'Turing',
        'born' => 1912
    ]);
    printf('Added data to the aturing document in the users collection.' . PHP_EOL);
    Einheit
    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.");
    });
    C#
    DocumentReference docRef = db.Collection("users").Document("aturing");
    Dictionary<string, object> user = new Dictionary<string, object>
    {
        { "First", "Alan" },
        { "Middle", "Mathison" },
        { "Last", "Turing" },
        { "Born", 1912 }
    };
    await docRef.SetAsync(user);
    Ruby
    doc_ref = firestore.doc "#{collection_path}/aturing"
    
    doc_ref.set(
      {
        first:  "Alan",
        middle: "Mathison",
        last:   "Turing",
        born:   1912
      }
    )
    
    puts "Added data to the aturing document in the users collection."

    Daten lesen

    Verwenden Sie die Datenansicht in der Firebase Console, um schnell zu prüfen, ob Sie Daten zu Cloud Firestore hinzugefügt haben.

    Sie können auch die "get"-Methode 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+KTX

    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()}");
      }
    });
    Java
    // asynchronously retrieve all users
    ApiFuture<QuerySnapshot> query = db.collection("users").get();
    // ...
    // query.get() blocks on response
    QuerySnapshot querySnapshot = query.get();
    List<QueryDocumentSnapshot> documents = querySnapshot.getDocuments();
    for (QueryDocumentSnapshot document : documents) {
      System.out.println("User: " + document.getId());
      System.out.println("First: " + document.getString("first"));
      if (document.contains("middle")) {
        System.out.println("Middle: " + document.getString("middle"));
      }
      System.out.println("Last: " + document.getString("last"));
      System.out.println("Born: " + document.getLong("born"));
    }
    Python
    users_ref = db.collection("users")
    docs = users_ref.stream()
    
    for doc in docs:
        print(f"{doc.id} => {doc.to_dict()}")

    Python

    users_ref = db.collection("users")
    docs = users_ref.stream()
    
    async for doc in docs:
        print(f"{doc.id} => {doc.to_dict()}")
    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;
      }
    });
    Node.js
    const snapshot = await db.collection('users').get();
    snapshot.forEach((doc) => {
      console.log(doc.id, '=>', doc.data());
    });
    Go
    iter := client.Collection("users").Documents(ctx)
    for {
    	doc, err := iter.Next()
    	if err == iterator.Done {
    		break
    	}
    	if err != nil {
    		log.Fatalf("Failed to iterate: %v", err)
    	}
    	fmt.Println(doc.Data())
    }
    PHP

    PHP

    Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken.

    $usersRef = $db->collection('samples/php/users');
    $snapshot = $usersRef->documents();
    foreach ($snapshot as $user) {
        printf('User: %s' . PHP_EOL, $user->id());
        printf('First: %s' . PHP_EOL, $user['first']);
        if (!empty($user['middle'])) {
            printf('Middle: %s' . PHP_EOL, $user['middle']);
        }
        printf('Last: %s' . PHP_EOL, $user['last']);
        printf('Born: %d' . PHP_EOL, $user['born']);
        printf(PHP_EOL);
    }
    printf('Retrieved and printed out all documents from the users collection.' . PHP_EOL);
    Einheit
    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.");
    });
    C#
    CollectionReference usersRef = db.Collection("users");
    QuerySnapshot snapshot = await usersRef.GetSnapshotAsync();
    foreach (DocumentSnapshot document in snapshot.Documents)
    {
        Console.WriteLine("User: {0}", document.Id);
        Dictionary<string, object> documentDictionary = document.ToDictionary();
        Console.WriteLine("First: {0}", documentDictionary["First"]);
        if (documentDictionary.ContainsKey("Middle"))
        {
            Console.WriteLine("Middle: {0}", documentDictionary["Middle"]);
        }
        Console.WriteLine("Last: {0}", documentDictionary["Last"]);
        Console.WriteLine("Born: {0}", documentDictionary["Born"]);
        Console.WriteLine();
    }
    Ruby
    users_ref = firestore.col collection_path
    users_ref.get do |user|
      puts "#{user.document_id} data: #{user.data}."
    end

    Daten schützen

    Wenn Sie das Web-, Android- oder Apple-Plattform-SDK verwenden, verwenden Sie die 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 auf dem Tab „Regeln“ der Console ä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;
        }
      }
    }
    

    Sperrmodus

    // 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 Produktionsumgebung 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, nutzen Sie die Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM), um Ihre Daten in Cloud Firestore zu schützen.

    Videoanleitung ansehen

    Eine ausführliche Anleitung zu den ersten Schritten mit den Cloud Firestore-Mobil-Clientbibliotheken erhalten 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: Erfahren Sie, wie Sie Cloud Firestore in einer echten App verwenden. Verwenden Sie dazu das Codelab für Android, iOS oder Web.
    • Datenmodell – Weitere Informationen zur Strukturierung von Daten in Cloud Firestore, einschließlich hierarchischer Daten und untergeordneter Sammlungen.
    • Daten hinzufügen – Erfahren Sie mehr über das 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.