Save the date - Google I/O returns May 18-20. Register to get the most out of the digital experience: Build your schedule, reserve space, participate in Q&As, earn Google Developer profile badges, and more. Register now
Diese Seite wurde von der Cloud Translation API übersetzt.
Switch to English

Beginnen Sie mit Cloud Firestore

Dieser Schnellstart zeigt Ihnen, wie Sie den Cloud Firestore einrichten, Daten hinzufügen und dann die Daten anzeigen, die Sie gerade in der Firebase-Konsole hinzugefügt haben.

Erstellen Sie eine Cloud Firestore-Datenbank

  1. Wenn Sie dies noch nicht getan haben, erstellen Sie ein Firebase-Projekt: Klicken Sie in der Firebase-Konsole auf Projekt hinzufügen und befolgen Sie die Anweisungen auf dem Bildschirm, um ein Firebase-Projekt zu erstellen oder einem vorhandenen GCP-Projekt Firebase-Dienste hinzuzufügen.

  2. Navigieren Sie zum Abschnitt Cloud Firestore der Firebase-Konsole . Sie werden aufgefordert, ein vorhandenes Firebase-Projekt auszuwählen. Folgen Sie dem Workflow zur Datenbankerstellung.

  3. Wählen Sie einen Startmodus für Ihre Cloud Firestore-Sicherheitsregeln:

    Testmodus

    Gut für den Einstieg in die mobilen und Web-Client-Bibliotheken, ermöglicht es jedoch jedem, Ihre Daten zu lesen und zu überschreiben. Lesen Sie nach dem Testen unbedingt den Abschnitt Sichern Sie Ihre Daten .

    Wählen Sie den Testmodus, um mit dem Web, iOS oder Android SDK zu beginnen.

    Gesperrter Modus

    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 gesperrten Modus aus, um mit der C # -, Go-, Java-, Node.js-, PHP-, Python- oder Ruby-Server-Clientbibliothek zu beginnen.

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

    • Diese Standorteinstellung ist der Standard-Ressourcenstandort Ihres Projekts für die Google Cloud Platform (GCP) . Beachten Sie, dass dieser Speicherort für GCP-Dienste in Ihrem Projekt verwendet wird, für die eine Standorteinstellung erforderlich ist, insbesondere für Ihren Standard- Cloud-Speicher- Bucket und Ihre App Engine- App (die erforderlich ist, wenn Sie Cloud Scheduler verwenden).

    • Wenn Sie keinen Speicherort auswählen können, verfügt Ihr Projekt bereits über einen Standardspeicherort für GCP-Ressourcen. Sie wurde entweder während der Projekterstellung oder beim Einrichten eines anderen Dienstes festgelegt, für den eine Standorteinstellung erforderlich ist.

  5. Klicken Sie auf Fertig .

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

Richten Sie Ihre Entwicklungsumgebung ein

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

Web v8

  1. Befolgen Sie die Anweisungen, um Firebase zu Ihrer Web-App hinzuzufügen .
  2. Fügen Sie Ihrer App die Bibliotheken Firebase und Cloud Firestore hinzu:
    <script src="https://www.gstatic.com/firebasejs/8.4.1/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/8.4.1/firebase-firestore.js"></script>
    Das Cloud Firestore SDK ist auch als npm-Paket verfügbar.
    npm install firebase@8.4.1 --save
    
    Sie müssen sowohl Firebase als auch Cloud Firestore manuell benötigen.
    const firebase = require("firebase");
    // Required for side-effects
    require("firebase/firestore");
    

Web v9

  1. Befolgen Sie die Anweisungen, um Firebase zu Ihrer Web-App hinzuzufügen .
  2. Das Cloud Firestore SDK ist als npm-Paket erhältlich.
    npm install firebase@9.0.0-beta.1 --save
    
    Sie müssen sowohl Firebase als auch Cloud Firestore importieren.
    import { initializeApp } from "firebase/app";
    import { getFirestore } from "firebase/firestore";
    
iOS
  1. Befolgen Sie die Anweisungen, um Firebase zu Ihrer iOS-App hinzuzufügen .
  2. Fügen Sie den Cloud Firestore-Pod zu Ihrer Podfile
    pod 'Firebase/Firestore'
    
    # Optionally, include the Swift extensions if you're using Swift.
    pod 'FirebaseFirestoreSwift'
    
    hinzu
  3. Speichern Sie die Datei und führen Sie die pod install .

Java

  1. Befolgen Sie die Anweisungen, um Firebase zu Ihrer Android-App hinzuzufügen .
  2. Deklarieren Sie mithilfe der Firebase Android BoM die Abhängigkeit für die Cloud Firestore Android-Bibliothek in der Gradle-Datei Ihres Moduls (App-Ebene) (normalerweise app/build.gradle ).
    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:27.1.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'
    }
    

    Bei Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen der Firebase Android-Bibliotheken.

    (Alternative) Deklarieren Sie Firebase-Bibliotheksabhängigkeiten, ohne die Stückliste zu verwenden

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die BoM zum Verwalten von Bibliotheksversionen zu verwenden, um sicherzustellen, 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:22.1.2'
    }
    

Kotlin + KTX

  1. Befolgen Sie die Anweisungen, um Firebase zu Ihrer Android-App hinzuzufügen .
  2. Deklarieren Sie mithilfe der Firebase Android BoM die Abhängigkeit für die Cloud Firestore Android-Bibliothek in der Gradle-Datei Ihres Moduls (App-Ebene) (normalerweise app/build.gradle ).
    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:27.1.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-ktx'
    }
    

    Bei Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen der Firebase Android-Bibliotheken.

    (Alternative) Deklarieren Sie Firebase-Bibliotheksabhängigkeiten, ohne die Stückliste zu verwenden

    Wenn Sie die Firebase-Stückliste nicht verwenden möchten, müssen Sie jede Firebase-Bibliotheksversion in ihrer Abhängigkeitszeile angeben.

    Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die BoM zum Verwalten von Bibliotheksversionen zu verwenden, um sicherzustellen, 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-ktx:22.1.2'
    }
    
Java
  1. Fügen Sie das Firebase Admin SDK zu Ihrer App hinzu:
    • Verwenden von Gradle:
      compile 'com.google.firebase:firebase-admin:7.1.1'
      
    • Verwenden von Maven:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>7.1.1</version>
      </dependency>
           
  2. Befolgen Sie die nachstehenden Anweisungen, um den Cloud Firestore mit den richtigen Anmeldeinformationen in Ihrer Umgebung zu initialisieren.
Python
  1. Fügen Sie das Firebase Admin SDK zu Ihrer Python-App hinzu:
    pip install --upgrade firebase-admin
  2. Befolgen Sie die nachstehenden Anweisungen, um den Cloud Firestore mit den richtigen Anmeldeinformationen in Ihrer Umgebung zu initialisieren.
C ++
  1. Befolgen Sie die Anweisungen, um Firebase zu Ihrem C ++ - Projekt hinzuzufügen .
  2. C ++ - Schnittstelle für Android.
    • Gradle-Abhängigkeiten. Fügen Sie Ihrer app/build.gradle Gradle-Datei (App-Ebene) (normalerweise app/build.gradle ) Folgendes app/build.gradle :
              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. In ähnlicher Weise wird empfohlen, die binären Abhängigkeiten CMakeLists.txt , indem Sie CMakeLists.txt Datei CMakeLists.txt Folgendes CMakeLists.txt :
              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 Desktop-Integration finden Sie unter Hinzufügen von Firebase zu Ihrem C ++ - Projekt .
Einheit
  1. Befolgen Sie die Anweisungen, um Firebase zu Ihrem Unity-Projekt hinzuzufügen .
  2. Unity-Oberfläche für Android.
  3. Aktivieren Sie beim Erstellen für Android ProGuarding, um das Android DEX-Limit zu umgehen. Dazu im Unity-Editor:

    1. Wählen Sie Datei> Build-Einstellungen
    2. Wechseln Sie zu "Plattform" zu "Android" und klicken Sie auf "Plattform wechseln".
    3. Klicken Sie auf "Player-Einstellungen ...".
    4. Wählen Sie in der Unity-Hauptbenutzeroberfläche unter "Einstellungen für Android" die Option "Veröffentlichungseinstellungen" aus.
    5. Ändern Sie im Abschnitt "Minimieren" die Release- und Debug-Einstellungen von "Keine" in "ProGuard".
Node.js
  1. Fügen Sie das Firebase Admin SDK zu Ihrer App hinzu:
    npm install firebase-admin --save
  2. Befolgen Sie die nachstehenden Anweisungen, um den Cloud Firestore mit den richtigen Anmeldeinformationen in Ihrer Umgebung zu initialisieren.
Gehen
  1. Fügen Sie das Firebase Admin SDK zu Ihrer Go-App hinzu:
    go get firebase.google.com/go
    
  2. Befolgen Sie die nachstehenden Anweisungen, um den Cloud Firestore mit den richtigen Anmeldeinformationen in Ihrer Umgebung zu initialisieren.
PHP
  1. Die Cloud Firestore-Server-Clientbibliotheken (Java, Node.js, Python, Go, PHP, C # und Ruby) verwenden die Standardanmeldeinformationen der Google-Anwendung zur Authentifizierung.
    • GOOGLE_APPLICATION_CREDENTIALS zur Authentifizierung in Ihrer Entwicklungsumgebung die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS , dass sie auf eine JSON-Dienstkonto-Schlüsseldatei GOOGLE_APPLICATION_CREDENTIALS . Sie können eine Schlüsseldatei auf der Seite Anmeldeinformationen der API-Konsole erstellen.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • In Ihrer Produktionsumgebung müssen Sie sich nicht authentifizieren, wenn Sie Ihre Anwendung auf App Engine oder Compute Engine ausführen und dasselbe Projekt verwenden, das Sie für Cloud Firestore verwenden. Andernfalls richten Sie ein Dienstkonto ein .
  2. Installieren und aktivieren Sie die gRPC-Erweiterung für PHP, die Sie zur Verwendung der Clientbibliothek benötigen.
  3. Fügen Sie Ihrer App 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 die Standardanmeldeinformationen der Google-Anwendung zur Authentifizierung.
    • GOOGLE_APPLICATION_CREDENTIALS zur Authentifizierung in Ihrer Entwicklungsumgebung die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS , dass sie auf eine JSON-Dienstkonto-Schlüsseldatei GOOGLE_APPLICATION_CREDENTIALS . Sie können eine Schlüsseldatei auf der Seite Anmeldeinformationen der API-Konsole erstellen.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • In Ihrer Produktionsumgebung müssen Sie sich nicht authentifizieren, wenn Sie Ihre Anwendung auf App Engine oder Compute Engine ausführen und dasselbe Projekt verwenden, das Sie für Cloud Firestore verwenden. Andernfalls richten Sie ein Dienstkonto ein .
  2. Fügen Sie die Cloud Firestore C # -Bibliothek zu Ihrer App in Ihrer .csproj Datei hinzu:
    <ItemGroup>
      <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" />
    </ItemGroup>
  3. Fügen Sie Ihrer Program.cs Datei Folgendes hinzu:
    using Google.Cloud.Firestore;
Rubin
  1. Die Cloud Firestore-Server-Clientbibliotheken (Java, Node.js, Python, Go, PHP, C # und Ruby) verwenden die Standardanmeldeinformationen der Google-Anwendung zur Authentifizierung.
    • GOOGLE_APPLICATION_CREDENTIALS zur Authentifizierung in Ihrer Entwicklungsumgebung die Umgebungsvariable GOOGLE_APPLICATION_CREDENTIALS , dass sie auf eine JSON-Dienstkonto-Schlüsseldatei GOOGLE_APPLICATION_CREDENTIALS . Sie können eine Schlüsseldatei auf der Seite Anmeldeinformationen der API-Konsole erstellen.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • In Ihrer Produktionsumgebung müssen Sie sich nicht authentifizieren, wenn Sie Ihre Anwendung auf App Engine oder Compute Engine ausführen und dasselbe Projekt verwenden, das Sie für Cloud Firestore verwenden. Andernfalls richten Sie ein Dienstkonto ein .
  2. Fügen Sie die Cloud Firestore Ruby-Bibliothek zu Ihrer App in Ihrem Gemfile :
    gem "google-cloud-firestore"
  3. Installieren Sie Abhängigkeiten von Ihrer Gemfile mit:
    bundle install

(Optional) Prototyp und Test mit Firebase Local Emulator Suite

Bevor wir darüber sprechen, wie Ihre App in den Cloud Firestore schreibt und aus diesem liest, stellen wir für mobile Entwickler eine Reihe von Tools vor, mit denen Sie die Funktionen des Cloud Firestore 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 Back-End zu interagieren, kann es eine gute Idee sein, lokal ohne Bereitstellung von Live-Diensten arbeiten zu können.

Ein Cloud Firestore-Emulator ist Teil der Local Emulator Suite, mit der Ihre App mit Ihrem emulierten Datenbankinhalt und Ihrer Konfiguration sowie optional mit Ihren emulierten Projektressourcen (Funktionen, andere Datenbanken und Sicherheitsregeln) interagieren kann. Beachten Sie, dass die Local Emulator Suite emulierten Cloud-Speicher noch nicht unterstützt.

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

  1. Hinzufügen einer Codezeile zur Testkonfiguration Ihrer App, um eine Verbindung zum Emulator herzustellen.
  2. Führen Sie im Stammverzeichnis Ihres lokalen Projektverzeichnisses firebase emulators:start .
  3. Tätigen von Anrufen aus dem Prototypcode Ihrer App mithilfe eines Cloud Firestore-Plattform-SDK wie gewohnt.

Eine detaillierte Anleitung mit Cloud Firestore und Cloud-Funktionen ist verfügbar. Sie sollten sich auch die Einführung in die Local Emulator Suite ansehen.

Cloud Firestore initialisieren

Initialisieren Sie eine Instanz von Cloud Firestore:

Web v8

// Initialize Cloud Firestore through Firebase
firebase.initializeApp({
  apiKey: '### FIREBASE API KEY ###',
  authDomain: '### FIREBASE AUTH DOMAIN ###',
  projectId: '### CLOUD FIRESTORE PROJECT ID ###'
});

var db = firebase.firestore();
Die Werte für "initializeApp" finden Sie in der " firebaseConfig" Ihrer Webanwendung. Informationen zum Beibehalten von Daten, wenn das Gerät die Verbindung verliert, finden Sie in der Dokumentation zum Aktivieren von Offlinedaten .

Web v9

// Initialize Cloud Firestore through Firebase
import { initializeApp } from "firebase/app"
import { getFirestore } from "firebase/firestore"
const firebaseApp = initializeApp({
  apiKey: '### FIREBASE API KEY ###',
  authDomain: '### FIREBASE AUTH DOMAIN ###',
  projectId: '### CLOUD FIRESTORE PROJECT ID ###'
});

const db = getFirestore();
Die Werte für "initializeApp" finden Sie in der " firebaseConfig" Ihrer Web-App. Informationen zum Beibehalten von Daten, wenn das Gerät die Verbindung verliert, finden Sie in der Dokumentation zum Aktivieren von Offlinedaten .
Schnell
import Firebase
FirebaseApp.configure()

let db = Firestore.firestore()
Ziel c
@import Firebase;

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

Java

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

Kotlin + KTX

// Access a Cloud Firestore instance from your Activity
val db = Firebase.firestore
Java
Das Cloud Firestore SDK wird je nach Umgebung auf unterschiedliche Weise initialisiert. Nachfolgend sind die gängigsten Methoden aufgeführt. Eine vollständige Referenz finden Sie unter Initialisieren des Admin-SDK .
  • Initialisieren Sie auf der Google Cloud Platform
    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();
    
  • Initialisieren Sie auf Ihrem eigenen Server

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

    Gehen Sie in der Cloud Platform Console zu IAM & admin> 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 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 auf unterschiedliche Weise initialisiert. Nachfolgend sind die gängigsten Methoden aufgeführt. Eine vollständige Referenz finden Sie unter Initialisieren des Admin-SDK .
  • Initialisieren Sie auf der Google Cloud Platform
    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, {
      'projectId': project_id,
    })
    
    db = firestore.client()
    
  • Initialisieren Sie auf Ihrem eigenen Server

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

    Gehen Sie in der Cloud Platform Console zu IAM & admin> 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')
    firebase_admin.initialize_app(cred)
    
    db = firestore.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 auf unterschiedliche Weise initialisiert. Nachfolgend sind die gängigsten Methoden aufgeführt. Eine vollständige Referenz finden Sie unter Initialisieren des Admin-SDK .
    • Initialisieren Sie auf Cloud-Funktionen
      const admin = require('firebase-admin');
      admin.initializeApp();
      
      const db = admin.firestore();
      
    • Initialisieren Sie auf der Google Cloud Platform
      const admin = require('firebase-admin');
      admin.initializeApp({
        credential: admin.credential.applicationDefault()
      });
      
      const db = admin.firestore();
    • Initialisieren Sie auf Ihrem eigenen Server

      Verwenden Sie ein Dienstkonto, um das Firebase Admin SDK auf Ihrem eigenen Server (oder in einer anderen Node.js-Umgebung) zu verwenden. Gehen Sie in der Cloud Platform Console zu IAM & admin> Dienstkonten. Generieren Sie einen neuen privaten Schlüssel und speichern Sie die JSON-Datei. Verwenden Sie dann die Datei, um das SDK zu initialisieren:

      const admin = require('firebase-admin');
      const serviceAccount = require('./path/to/serviceAccountKey.json');
      
      admin.initializeApp({
        credential: admin.credential.cert(serviceAccount)
      });
      
      const db = admin.firestore();
      
    Gehen
    Das Cloud Firestore SDK wird je nach Umgebung auf unterschiedliche Weise initialisiert. Nachfolgend sind die gängigsten Methoden aufgeführt. Eine vollständige Referenz finden Sie unter Initialisieren des Admin-SDK .
  • Initialisieren Sie auf der Google Cloud Platform
    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()
    
  • Initialisieren Sie auf Ihrem eigenen Server

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

    Gehen Sie in der Cloud Platform Console zu IAM & admin> 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 (
      "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
    use Google\Cloud\Firestore\FirestoreClient;
    
    /**
     * Initialize Cloud Firestore with default project ID.
     * ```
     * initialize();
     * ```
     */
    function initialize()
    {
        // Create the Cloud Firestore client
        $db = new FirestoreClient();
        printf('Created Cloud Firestore client with default project ID.' . PHP_EOL);
    }
    Einheit
    using Firebase.Firestore;
    using Firebase.Extensions;
    FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
    C #
    FirestoreDb db = FirestoreDb.Create(project);
    Console.WriteLine("Created Cloud Firestore client with project ID: {0}", project);
    Rubin
    require "google/cloud/firestore"
    
    firestore = Google::Cloud::Firestore.new project_id: project_id
    
    puts "Created Cloud Firestore client with given project ID."

    Daten hinzufügen

    Cloud Firestore speichert Daten in Dokumenten, die in Sammlungen gespeichert sind. Cloud Firestore erstellt Sammlungen und Dokumente implizit, wenn Sie dem Dokument zum ersten Mal Daten hinzufügen. Sie müssen keine expliziten Sammlungen oder Dokumente erstellen.

    Erstellen Sie eine neue Sammlung und ein Dokument mit dem folgenden Beispielcode.

    Web v8

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

    Web v9

    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);
    }
    Schnell
    // Add a new document with a generated ID
    var ref: DocumentReference? = nil
    ref = db.collection("users").addDocument(data: [
        "first": "Ada",
        "last": "Lovelace",
        "born": 1815
    ]) { err in
        if let err = err {
            print("Error adding document: \(err)")
        } else {
            print("Document added with ID: \(ref!.documentID)")
        }
    }
    Ziel c
    // 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);
          }
        }];

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

    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
    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(u'users').document(u'alovelace')
    doc_ref.set({
        u'first': u'Ada',
        u'last': u'Lovelace',
        u'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()
                  << '\n';
      } else {
        std::cout << "Error adding document: " << future.error_message() << '\n';
      }
    });
    Node.js
    const docRef = db.collection('users').doc('alovelace');
    
    await docRef.set({
      first: 'Ada',
      last: 'Lovelace',
      born: 1815
    });
    Gehen
    _, _, 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
    $docRef = $db->collection('users')->document('lovelace');
    $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);
    Rubin
    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 nun der users weiteres Dokument hinzu. Beachten Sie, dass dieses Dokument ein Schlüssel-Wert-Paar (zweiter Vorname) enthält, das im ersten Dokument nicht enthalten ist. Dokumente in einer Sammlung können unterschiedliche Informationen enthalten.

    Web v8

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

    Web v9

    // 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);
    }
    Schnell
    // Add a second document with a generated ID.
    ref = db.collection("users").addDocument(data: [
        "first": "Alan",
        "middle": "Mathison",
        "last": "Turing",
        "born": 1912
    ]) { err in
        if let err = err {
            print("Error adding document: \(err)")
        } else {
            print("Document added with ID: \(ref!.documentID)")
        }
    }
    Ziel c
    // 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);
          }
        }];

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

    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
    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(u'users').document(u'aturing')
    doc_ref.set({
        u'first': u'Alan',
        u'middle': u'Mathison',
        u'last': u'Turing',
        u'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() << '\n';
          } else {
            std::cout << "Error adding document: " << future.error_message()
                      << '\n';
          }
        });
    Node.js
    const aTuringRef = db.collection('users').doc('aturing');
    
    await aTuringRef.set({
      'first': 'Alan',
      'middle': 'Mathison',
      'last': 'Turing',
      'born': 1912
    });
    Gehen
    _, _, 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
    $docRef = $db->collection('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);
    Rubin
    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 den Daten-Viewer in der Firebase-Konsole , um schnell zu überprüfen, ob Sie Daten zum Cloud Firestore hinzugefügt haben.

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

    Web v8

    db.collection("users").get().then((querySnapshot) => {
        querySnapshot.forEach((doc) => {
            console.log(`${doc.id} => ${doc.data()}`);
        });
    });

    Web v9

    import { collection, getDocs } from "firebase/firestore"; 
    
    const querySnapshot = await getDocs(collection(db, "users"));
    querySnapshot.forEach((doc) => {
      console.log(`${doc.id} => ${doc.data()}`);
    });
    Schnell
    db.collection("users").getDocuments() { (querySnapshot, err) in
        if let err = err {
            print("Error getting documents: \(err)")
        } else {
            for document in querySnapshot!.documents {
                print("\(document.documentID) => \(document.data())")
            }
        }
    }
    Ziel c
    [[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);
            }
          }
        }];

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

    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
    // 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(u'users')
    docs = users_ref.stream()
    
    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 << '\n';
        }
      } else {
        std::cout << "Error getting documents: " << future.error_message()
                  << '\n';
      }
    });
    Node.js
    const snapshot = await db.collection('users').get();
    snapshot.forEach((doc) => {
      console.log(doc.id, '=>', doc.data());
    });
    Gehen
    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
    $usersRef = $db->collection('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();
    }
    Rubin
    users_ref = firestore.col collection_path
    users_ref.get do |user|
      puts "#{user.document_id} data: #{user.data}."
    end

    Sichern Sie Ihre Daten

    Wenn Sie das Web-, Android- oder iOS-SDK verwenden, verwenden Sie die Firebase-Authentifizierungs- und Cloud Firestore-Sicherheitsregeln , um Ihre Daten im Cloud Firestore zu sichern.

    Hier sind einige grundlegende Regelsätze, mit denen Sie beginnen können. Sie können Ihre Sicherheitsregeln auf der Registerkarte Regeln der Konsole ändern.

    Auth erforderlich

    // Allow read/write access on all documents to any user signed in to the application
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write: if request.auth != null;
        }
      }
    }
    

    Gesperrter Modus

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

    Testmodus

    // Allow read/write access to all users under any conditions
    // Warning: **NEVER** use this rule set in production; it allows
    // anyone to overwrite your entire database.
    service cloud.firestore {
      match /databases/{database}/documents {
        match /{document=**} {
          allow read, write: if true;
        }
      }
    }
    

    Wenn Sie eines der Server-SDKs verwenden, verwenden Sie Identity and Access Management (IAM) , um Ihre Daten im Cloud Firestore zu sichern.

    Sehen Sie sich ein Video-Tutorial an

    Ausführliche Anleitungen zum Einstieg in die Cloud Firestore-Bibliotheken für Mobilgeräte und Webclients finden Sie in einem der folgenden Video-Tutorials:

    Web v8

    iOS
    Android

    Weitere Videos finden Sie im YouTube-Kanal von Firebase.

    Nächste Schritte

    Vertiefen Sie Ihr Wissen mit folgenden Themen: