Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

Erste Schritte mit Cloud Firestore

In dieser Schnellstartanleitung erfahren Sie, wie Sie Cloud Firestore einrichten, Daten hinzufügen und dann die soeben hinzugefügten Daten in der Firebase-Konsole anzeigen.

Erstellen Sie eine Cloud Firestore-Datenbank

  1. Wenn Sie nicht bereits haben, erstellen Sie ein Projekt Firebase: In der Firebase - Konsole , klicken Sie auf Hinzufügen Projekt, dann die Anweisungen auf dem Bildschirm folgt ein Firebase - Projekt zu erstellen oder Firebase Dienstleistungen an vorhandenem GCP Projekt hinzuzufügen.

  2. Navigieren Sie zu dem Cloud Firestor Abschnitt 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 aus:

    Testmodus

    Gut für den Einstieg in die Mobil- und Web-Client-Bibliotheken, aber jeder kann Ihre Daten lesen und überschreiben. Nach der Prüfung, stellen Sie sicher , das überprüfen Sichern Sie Ihre Daten Abschnitt.

    Um mit dem Web-, iOS- oder Android-SDK zu beginnen, wählen Sie den Testmodus.

    Gesperrter Modus

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

    Um mit der C#-, Go-, Java-, Node.js-, PHP-, Python- oder Ruby-Server-Clientbibliothek zu beginnen, wählen Sie den gesperrten Modus.

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

    • Diese Standorteinstellung ist das Projekt Standard - Google Cloud Platform (GCP) Ressource Standort . Beachten Sie, dass dieser Standort für GCP - Dienste in Ihrem Projekt , das eine Standorteinstellung erfordert verwendet werden, insbesondere, Ihre Standard - Cloud Storage Eimer und Ihre App Engine - App (die erforderlich ist , wenn Sie Cloud - Scheduler verwenden).

    • Wenn Sie keinen Standort auswählen können, verfügt Ihr Projekt bereits über einen standardmäßigen GCP-Ressourcenstandort. Es wurde entweder während der Projekterstellung oder beim Einrichten eines anderen Dienstes festgelegt, der eine Standorteinstellung erfordert.

  5. Klicken Sie auf Fertig.

Wenn Sie Wolke Firestor aktivieren, es ermöglicht auch die API in dem Cloud API - Manager .

Richten Sie Ihre Entwicklungsumgebung ein

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

Webversion 8

  1. Folgen Sie den Anweisungen auf Firebase zu Ihrem Web - App hinzufügen .
  2. Fügen Sie die Firebase und Cloud - Firestor Bibliotheken zu Ihrer App:
    <script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-firestore.js"></script>
    The Cloud Firestore SDK auch als NPM - Paket verfügbar ist.
    npm install firebase@8.10.0 --save
    
    Sie werden sowohl manuell Firebase und Cloud - Firestor erfordern müssen.
    const firebase = require("firebase");
    // Required for side-effects
    require("firebase/firestore");
    

Webversion 9

  1. Folgen Sie den Anweisungen auf Firebase zu Ihrem Web - App hinzufügen .
  2. Das Cloud Firestore SDK ist als npm-Paket verfügbar.
    npm install firebase@9.1.3 --save
    
    Sie werden sowohl Firebase und Cloud - Firestor importieren müssen.
    import { initializeApp } from "firebase/app";
    import { getFirestore } from "firebase/firestore";
    
iOS
  1. Folgen Sie den Anweisungen auf Firebase zu Ihrem iOS - App hinzufügen .
  2. Fügen Sie die Wolke Firestore Pod mit der Podfile
    pod 'Firebase/Firestore'
    
    # Optionally, include the Swift extensions if you're using Swift.
    pod 'FirebaseFirestoreSwift'
    
  3. Speichern Sie die Datei und starten pod install .

Java

  1. Folgen Sie den Anweisungen auf Firebase zu Ihrer Android - App hinzufügen .
  2. Mit Hilfe der Firebase Android BoM , erklärt die Abhängigkeit für die Cloud Firestor Android - Bibliothek in Ihrem Modul (app-Ebene) Gradle Datei ( in der Regel app/build.gradle ).
    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // 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'
    }
    

    Durch die Verwendung des Firebase Android BoM werden, Ihre App immer kompatible Versionen der Firebase Android - Bibliotheken verwenden.

    (Alternative) Deklarieren Firebase Bibliothek Abhängigkeiten , ohne die BoM mit

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

    Beachten Sie, dass , wenn Sie mehrere Firebase Bibliotheken in Ihrer Anwendung verwenden wir mit der BoM empfehlen Bibliothek Versionen zu verwalten, die sicherstellt , 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:23.0.4'
    }
    

Kotlin+KTX

  1. Folgen Sie den Anweisungen auf Firebase zu Ihrer Android - App hinzufügen .
  2. Mit Hilfe der Firebase Android BoM , erklärt die Abhängigkeit für die Cloud Firestor Android - Bibliothek in Ihrem Modul (app-Ebene) Gradle Datei ( in der Regel app/build.gradle ).
    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.4.2')
    
        // 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'
    }
    

    Durch die Verwendung des Firebase Android BoM werden, Ihre App immer kompatible Versionen der Firebase Android - Bibliotheken verwenden.

    (Alternative) Deklarieren Firebase Bibliothek Abhängigkeiten , ohne die BoM mit

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

    Beachten Sie, dass , wenn Sie mehrere Firebase Bibliotheken in Ihrer Anwendung verwenden wir mit der BoM empfehlen Bibliothek Versionen zu verwalten, die sicherstellt , 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:23.0.4'
    }
    
Java
  1. Fügen Sie Ihrer App das Firebase Admin SDK hinzu:
    • Mit Gradle:
      compile 'com.google.firebase:firebase-admin:8.1.0'
      
    • Mit Maven:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>8.1.0</version>
      </dependency>
           
  2. Befolgen Sie die nachstehenden Anweisungen, um Cloud Firestore mit den richtigen Anmeldeinformationen in Ihrer Umgebung zu initialisieren.
Python
  1. Fügen Sie die Firebase Admin SDK zu Ihrem Python App:
    pip install --upgrade firebase-admin
  2. Befolgen Sie die nachstehenden Anweisungen, um Cloud Firestore mit den richtigen Anmeldeinformationen in Ihrer Umgebung zu initialisieren.
C++
  1. Folgen Sie den Anweisungen auf Firebase zu Ihrem C ++ Projekt hinzufügen .
  2. C++-Schnittstelle für Android.
    • Gradle-Abhängigkeiten. Fügen Sie folgende zu Ihrem Modul (app-Ebene) Gradle Datei ( in der Regel 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. Ähnlich ist die empfohlene Methode , um die binären Abhängigkeiten zu erhalten , ist die folgende Ihrem hinzuzufügen CMakeLists.txt Datei:
              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. Um Desktop - Integration einrichten, finden Sie hinzufügen Firebase zu Ihrem C ++ Projekt .
Einheit
  1. Folgen Sie den Anweisungen auf Firebase zu Ihrem Unity - Projekt hinzufügen .
  2. Unity-Schnittstelle für Android.
  3. Aktivieren Sie beim Erstellen für Android ProGuarding, um das Android DEX-Limit zu umgehen. Gehen Sie dazu im Unity-Editor wie folgt vor:

    1. Wählen Sie Datei > Build-Einstellungen
    2. Wechseln Sie von „Plattform“ zu „Android“ und klicken Sie auf „Plattform wechseln“.
    3. Klicken Sie auf „Spielereinstellungen…“
    4. Wählen Sie in der Hauptbenutzeroberfläche von Unity unter "Einstellungen für Android" die Option "Veröffentlichungseinstellungen".
    5. Ändern Sie im Abschnitt "Minify" sowohl die Release- als auch die Debug-Einstellungen von "None" in "ProGuard".
Node.js
  1. Fügen Sie die Firebase Admin SDK in Ihre App:
    npm install firebase-admin --save
  2. Befolgen Sie die nachstehenden Anweisungen, um Cloud Firestore mit den richtigen Anmeldeinformationen in Ihrer Umgebung zu initialisieren.
gehen
  1. Fügen Sie die Firebase Admin SDK zu Ihrem Go App:
    go get firebase.google.com/go
    
  2. Befolgen Sie die nachstehenden Anweisungen, um Cloud Firestore mit den richtigen Anmeldeinformationen in Ihrer Umgebung zu initialisieren.
PHP
  1. Die Cloud - Firestor Server - Client - Bibliotheken (Java, Node.js, Python, Go, PHP, C # und Ruby) Verwendung Google - Anwendung Standard - Anmeldeinformationen für die Authentifizierung.
    • Um von Ihrer Entwicklungsumgebung zu authentifizieren, stellen Sie den GOOGLE_APPLICATION_CREDENTIALS Umgebungsvariable Punkt zu einer JSON - Dienstkonto Schlüsseldatei. Sie können eine Schlüsseldatei auf der erstellen API Console Credentials Seite .
      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 ein Dienstkonto einrichten .
  2. Installieren und aktivieren Sie die gRPC Erweiterung für PHP, die Sie benötigen , um die Client - Bibliothek zu verwenden.
  3. Fügen Sie die Wolke Firestor PHP - Bibliothek , um Ihre Anwendung:
    composer require google/cloud-firestore
C#
  1. Die Cloud - Firestor Server - Client - Bibliotheken (Java, Node.js, Python, Go, PHP, C # und Ruby) Verwendung Google - Anwendung Standard - Anmeldeinformationen für die Authentifizierung.
    • Um von Ihrer Entwicklungsumgebung zu authentifizieren, stellen Sie den GOOGLE_APPLICATION_CREDENTIALS Umgebungsvariable Punkt zu einer JSON - Dienstkonto Schlüsseldatei. Sie können eine Schlüsseldatei auf der erstellen API Console Credentials Seite .
      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 ein Dienstkonto einrichten .
  2. Fügen Sie die Wolke Firestor C # -Bibliothek , um Ihre Anwendung in Ihrer .csproj Datei:
    <ItemGroup>
      <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" />
    </ItemGroup>
  3. Fügen Sie die folgende auf Ihre Program.cs Datei:
    using Google.Cloud.Firestore;
Rubin
  1. Die Cloud - Firestor Server - Client - Bibliotheken (Java, Node.js, Python, Go, PHP, C # und Ruby) Verwendung Google - Anwendung Standard - Anmeldeinformationen für die Authentifizierung.
    • Um von Ihrer Entwicklungsumgebung zu authentifizieren, stellen Sie den GOOGLE_APPLICATION_CREDENTIALS Umgebungsvariable Punkt zu einer JSON - Dienstkonto Schlüsseldatei. Sie können eine Schlüsseldatei auf der erstellen API Console Credentials Seite .
      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 ein Dienstkonto einrichten .
  2. Fügen Sie die Wolke Firestor Ruby - Bibliothek , um Ihre Anwendung in Ihrem Gemfile :
    gem "google-cloud-firestore"
  3. Installieren Sie Abhängigkeiten von Ihrem Gemfile mit:
    bundle install

(Optional) Prototyp und Test mit Firebase Local Emulator Suite

Bevor wir für mobile Entwickler darüber sprechen, wie Ihre App in Cloud Firestore schreibt und liest, stellen wir zunächst eine Reihe von Tools vor, die Sie zum Prototyping und Testen der Cloud Firestore-Funktionalität verwenden 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 zu arbeiten, ohne Live-Dienste bereitzustellen.

Ein Cloud Firestore-Emulator ist Teil der Local Emulator Suite, die es Ihrer App ermöglicht, mit Ihren emulierten Datenbankinhalten und -konfigurationen sowie optional mit Ihren emulierten Projektressourcen (Funktionen, andere Datenbanken und Sicherheitsregeln) zu interagieren.

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. Von der Wurzel Ihrer lokalen Projektverzeichnis, laufen firebase emulators:start .
  3. Anrufe wie gewohnt über den Prototypcode Ihrer App mit einem Cloud Firestore-Plattform-SDK tätigen.

Ein detaillierter Durchlauf Wolke Firestor und Cloud - Funktionen beteiligt ist vorhanden. Sie sollten auch einen Blick auf die haben Local Emulator Suite Einführung .

Cloud Firestore initialisieren

Initialisieren Sie eine Instanz von Cloud Firestore:

Webversion 9

// 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` kann in Ihrem Web - App zu finden ` firebaseConfig` . Um Daten bestehen bleiben , wenn das Gerät seine Verbindung verliert, finden Sie die Aktivieren Offline- Dokumentation.

Webversion 8

// 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` kann in Ihrem Web - App zu finden ` firebaseConfig` . Um Daten bestehen bleiben , wenn das Gerät seine Verbindung verliert, finden Sie die Aktivieren Offline- Dokumentation.
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 initialisieren das Admin SDK .
  • Initialisieren auf 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();
    
  • Auf Ihrem eigenen Server initialisieren

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

    Zum IAM & Admin> Konten - Service in der Cloud Platform Console. 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 initialisieren das Admin SDK .
  • Initialisieren auf 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()
    
  • Auf Ihrem eigenen Server initialisieren

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

    Zum IAM & Admin> Konten - Service in der Cloud Platform Console. 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()
    
  • Python

    Das Cloud Firestore SDK wird je nach Umgebung auf unterschiedliche Weise initialisiert. Im Folgenden sind die gängigsten Methoden aufgeführt. Eine vollständige Referenz finden Sie initialisieren das Admin SDK .
  • Initialisieren auf 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.AsyncClient()
    
  • Auf Ihrem eigenen Server initialisieren

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

    Zum IAM & Admin> Konten - Service in der Cloud Platform Console. 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.AsyncClient()
    
  • 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 initialisieren das Admin SDK .
    • Initialisieren auf Cloud - Funktionen
      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue } = require('firebase-admin/firestore');
      initializeApp();
      
      const db = getFirestore();
      
    • Initialisieren auf Google Cloud Platform
      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue } = require('firebase-admin/firestore');
      initializeApp({
        credential: applicationDefault()
      });
      
      const db = getFirestore();
    • Auf Ihrem eigenen Server initialisieren

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

      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue } = require('firebase-admin/firestore');
      const serviceAccount = require('./path/to/serviceAccountKey.json');
      
      initializeApp({
        credential: cert(serviceAccount)
      });
      
      const db = getFirestore();
      
    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 initialisieren das Admin SDK .
  • Initialisieren auf 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()
    
  • Auf Ihrem eigenen Server initialisieren

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

    Zum IAM & Admin> Konten - Service in der Cloud Platform Console. 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.
     */
    function setup_client_create()
    {
        // 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"
    
    # 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

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

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

    Webversion 9

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

    Webversion 8

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

    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
    });
    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('samples/php/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."

    Nun fügen Sie ein weiteres Dokument an den users Sammlung. Beachten Sie, dass dieses Dokument ein Schlüssel-Wert-Paar (mittlerer Vorname) enthält, das im ersten Dokument nicht vorkommt. Dokumente in einer Sammlung können verschiedene Sätze von Informationen enthalten.

    Webversion 9

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

    Webversion 8

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

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

    Um schnell überprüfen, ob Sie Daten auf Cloud - Firestor hinzugefügt haben, verwenden Sie den Daten - Viewer in der Firebase Konsole .

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

    Webversion 9

    import { collection, getDocs } from "firebase/firestore"; 
    
    const querySnapshot = await getDocs(collection(db, "users"));
    querySnapshot.forEach((doc) => {
      console.log(`${doc.id} => ${doc.data()}`);
    });

    Webversion 8

    db.collection("users").get().then((querySnapshot) => {
        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()}')

    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());
    });
    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('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();
    }
    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 verwenden, Android oder iOS SDK, verwenden Firebase - Authentifizierung und Cloud - Firestor Sicherheitsregeln , um Ihre Daten in Cloud - Firestor zu sichern.

    Hier sind einige grundlegende Regelsätze, die Sie für den Anfang verwenden können. Sie können Ihre Sicherheitsregeln in den ändern Registerkarte Regeln der Konsole.

    Authentifizierung 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 einen des Server SDKs verwenden, Verwendung Identity und Access Management (IAM) Ihre Daten in Cloud - Firestor zu sichern.

    Sehen Sie sich ein Video-Tutorial an

    Ausführliche Anleitungen zu den ersten Schritten mit den mobilen Clientbibliotheken von Cloud Firestore finden Sie in einer der folgenden Videoanleitungen:

    Netz
    iOS
    Android

    Sie können weitere Videos aus der Firebase finden YouTube - Kanal .

    Nächste Schritte

    Vertiefen Sie Ihr Wissen mit folgenden Themen:

    • Codelabs - Lernen Wolke Firestor in einer realen Anwendung , indem Sie das Code - Lab für die Verwendung Android , iOS oder Web .
    • Datenmodell - Erfahren Sie mehr darüber , wie Daten in Cloud - Firestor strukturiert ist, einschließlich hierarchische Daten und Subkollektionen.
    • Daten hinzufügen - Weitere Informationen zum Erstellen und Aktualisieren von Daten in Cloud - Firestor.
    • Erhalten Sie Daten - Erfahren Sie , wie Daten abzurufen.
    • Führen Sie einfache und zusammengesetzte Abfragen - Erfahren Sie, wie einfache und zusammengesetzte Abfragen auszuführen.
    • Bestellung und Limit - Abfragen Erfahren Sie, wie zu bestellen und die Daten durch Ihre Abfragen zurückgegeben begrenzen.