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
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 dann die Anweisungen auf dem Bildschirm, um ein Firebase-Projekt zu erstellen oder Firebase-Dienste zu einem vorhandenen GCP-Projekt hinzuzufügen.
Navigieren Sie zum Abschnitt „Cloud Firestore“ der Firebase-Konsole . Sie werden aufgefordert, ein vorhandenes Firebase-Projekt auszuwählen. Befolgen Sie den Workflow zur Datenbankerstellung.
Wählen Sie einen Startmodus für Ihre Cloud Firestore-Sicherheitsregeln:
- Testmodus
Gut für den Einstieg in die Mobil- und Web-Client-Bibliotheken, ermöglicht aber jedem, Ihre Daten zu lesen und zu überschreiben. Lesen Sie nach dem Test unbedingt den Abschnitt „Sichern Sie Ihre Daten“ .
Um mit dem Web, Apple-Plattformen oder dem Android SDK zu beginnen, wählen Sie den Testmodus.
- Gesperrter Modus
Verweigert alle Lese- und Schreibvorgänge von Mobil- 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.
Ihr anfänglicher Satz an Cloud Firestore-Sicherheitsregeln gilt für Ihre Standard-Cloud Firestore-Datenbank. Wenn Sie für Ihr Projekt mehrere Datenbanken erstellen, können Sie Cloud Firestore-Sicherheitsregeln für jede Datenbank bereitstellen.
Wählen Sie einen Speicherort für Ihre Datenbank.
Diese Standorteinstellung ist der standardmäßige Google Cloud Platform (GCP)-Ressourcenstandort Ihres Projekts. Beachten Sie, dass dieser Standort für GCP-Dienste in Ihrem Projekt verwendet wird, die eine Standorteinstellung erfordern, insbesondere Ihren Standard- Cloud Storage- Bucket 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.
Klicken Sie auf Fertig .
Wenn Sie 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 namespaced API
- Befolgen Sie die Anweisungen, um Firebase zu Ihrer Web-App hinzuzufügen .
- Fügen Sie Ihrer App die Bibliotheken Firebase und Cloud Firestore hinzu:
<script src="https://www.gstatic.com/firebasejs/10.7.0/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/10.7.0/firebase-firestore-compat.js"></script>
Das Cloud Firestore SDK ist auch als npm-Paket verfügbar.npm install firebase@10.7.0 --save
Sie müssen sowohl Firebase als auch Cloud Firestore manuell anfordern.import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
Web modular API
- Befolgen Sie die Anweisungen, um Firebase zu Ihrer Web-App hinzuzufügen .
- Das Cloud Firestore SDK ist als npm-Paket verfügbar.
npm install firebase@10.7.0 --save
Sie müssen sowohl Firebase als auch Cloud Firestore importieren.import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS+
Befolgen Sie die Anweisungen, um Firebase zu Ihrer Apple-App hinzuzufügen .
Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.
- Navigieren Sie in Xcode bei geöffnetem App-Projekt zu File > Swift Packages > Add Package Dependency .
- Wenn Sie dazu aufgefordert werden, fügen Sie das Firebase Apple Platforms SDK-Repository hinzu:
- Wählen Sie die Firestore-Bibliothek.
- Wenn Sie fertig sind, beginnt Xcode automatisch mit der Auflösung und dem Herunterladen Ihrer Abhängigkeiten im Hintergrund.
https://github.com/firebase/firebase-ios-sdk
Android
- Befolgen Sie die Anweisungen, um Firebase zu Ihrer Android-App hinzuzufügen .
- Deklarieren Sie mithilfe der Firebase Android BoM die Abhängigkeit für die Cloud Firestore-Bibliothek für Android in der Gradle-Datei Ihres Moduls (App-Ebene) (normalerweise
app/build.gradle.kts
oderapp/build.gradle
).dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:32.6.0")) // Declare the dependency for the Cloud Firestore library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-firestore") }
Durch die Verwendung der Firebase Android BoM verwendet Ihre App immer kompatible Versionen der Firebase Android-Bibliotheken.
(Alternative) Deklarieren Sie Abhängigkeiten der Firebase-Bibliothek , 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.
Beachten Sie: Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die BoM zum Verwalten der 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:24.9.1") }
Suchen Sie nach einem Kotlin-spezifischen Bibliotheksmodul? Ab der Veröffentlichung vom Oktober 2023 können sich sowohl Kotlin- als auch Java-Entwickler auf das Hauptbibliotheksmodul verlassen (Einzelheiten finden Sie in den FAQ zu dieser Initiative ).
Dart
- Falls noch nicht geschehen, konfigurieren und initialisieren Sie Firebase in Ihrer Flutter-App.
- Führen Sie im Stammverzeichnis Ihres Flutter-Projekts den folgenden Befehl aus, um das Plugin zu installieren:
flutter pub add cloud_firestore
- Wenn Sie fertig sind, erstellen Sie Ihre Flutter-Anwendung neu:
flutter run
- Optional: Verbessern Sie die Build-Zeiten für iOS und macOS, indem Sie das vorkompilierte Framework einbinden.
Derzeit ist das Firestore SDK für iOS auf Code angewiesen, dessen Erstellung in Xcode mehr als 5 Minuten dauern kann. Um die Build-Zeiten erheblich zu verkürzen, können Sie eine vorkompilierte Version verwenden, indem Sie diese Zeile zum
target 'Runner' do
in Ihrer Poddatei hinzufügen:target 'Runner' do pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => '8.15.0' # ... end
Stellen Sie außerdem sicher, dass Sie CocoaPods auf 1.9.1 oder höher aktualisiert haben:
gem install cocoapods
Weitere Informationen finden Sie im Issue auf GitHub .
Java
- Fügen Sie das Firebase Admin SDK zu Ihrer App hinzu:
- Verwenden von Gradle:
compile 'com.google.firebase:firebase-admin:1.32.0'
- Mit Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>1.32.0</version> </dependency>
- Verwenden von Gradle:
- Befolgen Sie die nachstehenden Anweisungen, um Cloud Firestore mit den richtigen Anmeldeinformationen in Ihrer Umgebung zu initialisieren.
Python
- Fügen Sie das Firebase Admin SDK zu Ihrer Python-App hinzu:
pip install --upgrade firebase-admin
- Befolgen Sie die nachstehenden Anweisungen, um Cloud Firestore mit den richtigen Anmeldeinformationen in Ihrer Umgebung zu initialisieren.
C++
- Befolgen Sie die Anweisungen, um Firebase zu Ihrem C++-Projekt hinzuzufügen .
- C++-Schnittstelle für Android.
- Gradle-Abhängigkeiten. Fügen Sie Folgendes zu Ihrer Modul-Gradle-Datei (auf App-Ebene) hinzu (normalerweise
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. Ebenso besteht die empfohlene Methode zum Abrufen der binären Abhängigkeiten darin, Folgendes zu Ihrer
CMakeLists.txt
-Datei hinzuzufügen:add_subdirectory(${FIREBASE_CPP_SDK_DIR} bin/ EXCLUDE_FROM_ALL) set(firebase_libs firebase_auth firebase_firestore firebase_app) # Replace the target name below with the actual name of your target, # for example, "native-lib". target_link_libraries(${YOUR_TARGET_NAME_HERE} "${firebase_libs}")
- Informationen zum Einrichten der Desktop-Integration finden Sie unter Hinzufügen von Firebase zu Ihrem C++-Projekt .
Einheit
- Befolgen Sie die Anweisungen, um Firebase zu Ihrem Unity-Projekt hinzuzufügen .
- Verwenden Sie die Unity-Schnittstelle, um Ihr Projekt so zu konfigurieren, dass Android-Builds minimiert werden.
- Die Option finden Sie unter Player-Einstellungen > Android > Veröffentlichungseinstellungen > Minifizieren .
- Die Optionen können in verschiedenen Unity-Versionen unterschiedlich sein. Weitere Informationen finden Sie in der offiziellen Unity-Dokumentation und im Firebase Unity Build Debug Guide .
- Wenn die Anzahl der referenzierten Methoden nach der Aktivierung der Minifizierung immer noch den Grenzwert überschreitet, besteht eine weitere Möglichkeit darin,
multidex
zu aktivieren in:-
mainTemplate.gradle
, wenn „Benutzerdefinierte Gradle-Vorlage“ unter „Player-Einstellungen“ aktiviert ist - oder die Datei
build.gradle
auf Modulebene, wenn Sie Android Studio zum Erstellen des exportierten Projekts verwenden.
-
Sie müssen den Build minimieren, um die Meldung Error while merging dex archives
zu vermeiden.
Node.js
- Fügen Sie Ihrer App das Firebase Admin SDK hinzu:
npm install firebase-admin --save
- Befolgen Sie die nachstehenden Anweisungen, um Cloud Firestore mit den richtigen Anmeldeinformationen in Ihrer Umgebung zu initialisieren.
Gehen
- Fügen Sie das Firebase Admin SDK zu Ihrer Go-App hinzu:
go get firebase.google.com/go
- Befolgen Sie die nachstehenden Anweisungen, um Cloud Firestore mit den richtigen Anmeldeinformationen in Ihrer Umgebung zu initialisieren.
PHP
- Die Cloud Firestore-Server-Clientbibliotheken (Java, Node.js, Python, Go, PHP, C# und Ruby) verwenden die Standardanmeldeinformationen von Google Application für die Authentifizierung.
- Um sich in Ihrer Entwicklungsumgebung zu authentifizieren, legen Sie die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
so fest, dass sie auf eine JSON-Dienstkontoschlüsseldatei verweist. Sie können eine Schlüsseldatei auf der Seite „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 dabei dasselbe Projekt verwenden, das Sie für Cloud Firestore verwenden. Andernfalls richten Sie ein Dienstkonto ein .
- Um sich in Ihrer Entwicklungsumgebung zu authentifizieren, legen Sie die Umgebungsvariable
- Installieren und aktivieren Sie die gRPC-Erweiterung für PHP, die Sie zur Verwendung der Client-Bibliothek benötigen.
- Fügen Sie Ihrer App die Cloud Firestore PHP-Bibliothek hinzu:
composer require google/cloud-firestore
C#
- Die Cloud Firestore-Server-Clientbibliotheken (Java, Node.js, Python, Go, PHP, C# und Ruby) verwenden die Standardanmeldeinformationen von Google Application für die Authentifizierung.
- Um sich in Ihrer Entwicklungsumgebung zu authentifizieren, legen Sie die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
so fest, dass sie auf eine JSON-Dienstkontoschlüsseldatei verweist. Sie können eine Schlüsseldatei auf der Seite „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 dabei dasselbe Projekt verwenden, das Sie für Cloud Firestore verwenden. Andernfalls richten Sie ein Dienstkonto ein .
- Um sich in Ihrer Entwicklungsumgebung zu authentifizieren, legen Sie die Umgebungsvariable
- 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>
- Fügen Sie Ihrer
Program.cs
Datei Folgendes hinzu:using Google.Cloud.Firestore;
Rubin
- Die Cloud Firestore-Server-Clientbibliotheken (Java, Node.js, Python, Go, PHP, C# und Ruby) verwenden die Standardanmeldeinformationen von Google Application für die Authentifizierung.
- Um sich in Ihrer Entwicklungsumgebung zu authentifizieren, legen Sie die Umgebungsvariable
GOOGLE_APPLICATION_CREDENTIALS
so fest, dass sie auf eine JSON-Dienstkontoschlüsseldatei verweist. Sie können eine Schlüsseldatei auf der Seite „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 dabei dasselbe Projekt verwenden, das Sie für Cloud Firestore verwenden. Andernfalls richten Sie ein Dienstkonto ein .
- Um sich in Ihrer Entwicklungsumgebung zu authentifizieren, legen Sie die Umgebungsvariable
- Fügen Sie die Cloud Firestore Ruby-Bibliothek zu Ihrer App in Ihrer
Gemfile
hinzu:gem "google-cloud-firestore"
- Installieren Sie Abhängigkeiten aus Ihrer
Gemfile
mit:bundle install
(Optional) Prototypen erstellen und mit der Firebase Local Emulator Suite testen
Für mobile Entwickler: Bevor wir darüber sprechen, wie Ihre App in Cloud Firestore schreibt und daraus liest, stellen wir eine Reihe von Tools vor, mit denen Sie Cloud Firestore-Funktionen prototypisieren und testen können: Firebase Local Emulator Suite. Wenn Sie verschiedene Datenmodelle ausprobieren, Ihre Sicherheitsregeln optimieren oder daran arbeiten, die kostengünstigste Möglichkeit für die Interaktion mit dem Back-End zu finden, kann die Möglichkeit, lokal zu arbeiten, ohne Live-Dienste bereitzustellen, eine gute Idee sein.
Ein Cloud Firestore-Emulator ist Teil der Local Emulator Suite, die es Ihrer App ermöglicht, mit Ihrem emulierten Datenbankinhalt und Ihrer emulierten Datenbankkonfiguration sowie optional mit Ihren emulierten Projektressourcen (Funktionen, andere Datenbanken und Sicherheitsregeln) zu interagieren.
Die Verwendung des Cloud Firestore-Emulators erfordert nur wenige Schritte:
- Fügen Sie der Testkonfiguration Ihrer App eine Codezeile hinzu, um eine Verbindung zum Emulator herzustellen.
- Führen Sie im Stammverzeichnis Ihres lokalen Projektverzeichnisses
firebase emulators:start
. - Führen Sie wie gewohnt Aufrufe aus dem Prototypcode Ihrer App mithilfe eines Cloud Firestore-Plattform-SDK durch.
Eine detaillierte Anleitung zu Cloud Firestore und Cloud Functions ist verfügbar. Sie sollten sich auch die Einführung zur Local Emulator Suite ansehen.
Cloud Firestore initialisieren
Initialisieren Sie eine Instanz von Cloud Firestore:
Web modular API
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = getFirestore(app);
Ersetzen Sie FIREBASE_CONFIGURATION durch firebaseConfig
Ihrer Web-App.
Informationen zum Beibehalten von Daten, wenn das Gerät die Verbindung verliert, finden Sie in der Dokumentation zum Aktivieren von Offline-Daten .
Web namespaced API
import firebase from "firebase/app"; import "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = firebase.firestore();
Ersetzen Sie FIREBASE_CONFIGURATION durch firebaseConfig
Ihrer Web-App.
Informationen zum Beibehalten von Daten, wenn das Gerät die Verbindung verliert, finden Sie in der Dokumentation zum Aktivieren von Offline-Daten .
Schnell
import FirebaseCore import FirebaseFirestore
FirebaseApp.configure() let db = Firestore.firestore()
Ziel c
@import FirebaseCore; @import FirebaseFirestore; // Use Firebase library to configure APIs [FIRApp configure];
FIRFirestore *defaultFirestore = [FIRFirestore firestore];
Kotlin+KTX
// Access a Cloud Firestore instance from your Activity
val db = Firebase.firestore
Java
// Access a Cloud Firestore instance from your Activity
FirebaseFirestore db = FirebaseFirestore.getInstance();
Dart
db = FirebaseFirestore.instance;
Java
Das Cloud Firestore SDK wird je nach Umgebung auf unterschiedliche Weise initialisiert. Nachfolgend sind die gängigsten Methoden aufgeführt. Eine vollständige Referenz finden Sie unter Initialisieren des Admin SDK .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();
Um das Firebase Admin SDK auf Ihrem eigenen Server zu verwenden, verwenden Sie ein Dienstkonto .
Gehen Sie in der Google Cloud 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 .import firebase_admin from firebase_admin import firestore # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore.client()
Zur Initialisierung des SDK können auch vorhandene Standardanmeldeinformationen für die Anwendung verwendet werden.
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore # Use the application default credentials. cred = credentials.ApplicationDefault() firebase_admin.initialize_app(cred) db = firestore.client()
Um das Firebase Admin SDK auf Ihrem eigenen Server zu verwenden, verwenden Sie ein Dienstkonto .
Gehen Sie in der Google Cloud 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') app = firebase_admin.initialize_app(cred) db = firestore.client()
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 .import firebase_admin from firebase_admin import firestore_async # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore_async.client()
Zur Initialisierung des SDK können auch vorhandene Standardanmeldeinformationen für die Anwendung verwendet werden.
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore_async # Use the application default credentials. cred = credentials.ApplicationDefault() firebase_admin.initialize_app(cred) db = firestore_async.client()
Um das Firebase Admin SDK auf Ihrem eigenen Server zu verwenden, verwenden Sie ein Dienstkonto .
Gehen Sie in der Google Cloud 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_async # Use a service account. cred = credentials.Certificate('path/to/serviceAccount.json') app = firebase_admin.initialize_app(cred) db = firestore_async.client()
C++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance(). App::Create(); Firestore* db = Firestore::GetInstance();
Node.js
Das Cloud Firestore SDK wird je nach Umgebung auf unterschiedliche Weise initialisiert. Nachfolgend sind die gängigsten Methoden aufgeführt. Eine vollständige Referenz finden Sie unter Initialisieren des Admin SDK .- Auf Cloud Functions
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp(); const db = getFirestore();
initialisieren - Initialisieren Sie in Google Cloud
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp({ credential: applicationDefault() }); const db = getFirestore();
- Initialisieren Sie auf Ihrem eigenen Server
Um das Firebase Admin SDK auf Ihrem eigenen Server (oder einer anderen Node.js-Umgebung) zu verwenden, verwenden Sie ein Dienstkonto . Gehen Sie in der Google Cloud 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 { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
const serviceAccount = require('./path/to/serviceAccountKey.json'); initializeApp({ credential: cert(serviceAccount) }); const db = getFirestore();
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 .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()
Um das Firebase Admin SDK auf Ihrem eigenen Server zu verwenden, verwenden Sie ein Dienstkonto .
Gehen Sie in der Google Cloud 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
PHP
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Einheit
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
C#
C#
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
Rubin
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 expliziten Sammlungen oder Dokumente erstellen.
Erstellen Sie mit dem folgenden Beispielcode eine neue Sammlung und ein Dokument.
Web modular API
import { collection, addDoc } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Ada", last: "Lovelace", born: 1815 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
Web namespaced API
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); } }];
Kotlin+KTX
// Create a new user with a first and last name val user = hashMapOf( "first" to "Ada", "last" to "Lovelace", "born" to 1815, ) // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener { documentReference -> Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}") } .addOnFailureListener { e -> Log.w(TAG, "Error adding document", e) }
Java
// Create a new user with a first and last name Map<String, Object> user = new HashMap<>(); user.put("first", "Ada"); user.put("last", "Lovelace"); user.put("born", 1815); // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId()); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error adding document", e); } });
Dart
// Create a new user with a first and last name final user = <String, dynamic>{ "first": "Ada", "last": "Lovelace", "born": 1815 }; // Add a new document with a generated ID db.collection("users").add(user).then((DocumentReference doc) => print('DocumentSnapshot added with ID: ${doc.id}'));
Java
Python
Python
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
Gehen
PHP
PHP
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
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#
Rubin
Fügen Sie nun ein weiteres Dokument zur users
hinzu. Beachten Sie, dass dieses Dokument ein Schlüssel-Wert-Paar (zweiter Vorname) enthält, das im ersten Dokument nicht vorkommt. Dokumente in einer Sammlung können unterschiedliche Informationssätze enthalten.
Web modular API
// Add a second document with a generated ID. import { addDoc, collection } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
Web namespaced API
// 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); } }];
Kotlin+KTX
// Create a new user with a first, middle, and last name val user = hashMapOf( "first" to "Alan", "middle" to "Mathison", "last" to "Turing", "born" to 1912, ) // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener { documentReference -> Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}") } .addOnFailureListener { e -> Log.w(TAG, "Error adding document", e) }
Java
// Create a new user with a first, middle, and last name Map<String, Object> user = new HashMap<>(); user.put("first", "Alan"); user.put("middle", "Mathison"); user.put("last", "Turing"); user.put("born", 1912); // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId()); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error adding document", e); } });
Dart
// Create a new user with a first and last name final user = <String, dynamic>{ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 }; // Add a new document with a generated ID db.collection("users").add(user).then((DocumentReference doc) => print('DocumentSnapshot added with ID: ${doc.id}'));
Java
Python
Python
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
Gehen
PHP
PHP
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
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#
Rubin
Daten lesen
Verwenden Sie den Datenviewer in der Firebase-Konsole , um schnell zu überprüfen, ob Sie Daten zu Cloud Firestore hinzugefügt haben.
Sie können auch die Methode „get“ verwenden, um die gesamte Sammlung abzurufen.
Web modular API
import { collection, getDocs } from "firebase/firestore"; const querySnapshot = await getDocs(collection(db, "users")); querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); });
Web namespaced API
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); } } }];
Kotlin+KTX
db.collection("users") .get() .addOnSuccessListener { result -> for (document in result) { Log.d(TAG, "${document.id} => ${document.data}") } } .addOnFailureListener { exception -> Log.w(TAG, "Error getting documents.", exception) }
Java
db.collection("users") .get() .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { if (task.isSuccessful()) { for (QueryDocumentSnapshot document : task.getResult()) { Log.d(TAG, document.getId() + " => " + document.getData()); } } else { Log.w(TAG, "Error getting documents.", task.getException()); } } });
Dart
await db.collection("users").get().then((event) { for (var doc in event.docs) { print("${doc.id} => ${doc.data()}"); } });
Java
Python
users_ref = db.collection("users") docs = users_ref.stream() for doc in docs: print(f"{doc.id} => {doc.to_dict()}")
Python
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
Gehen
PHP
PHP
Weitere Informationen zum Installieren und Erstellen eines Cloud Firestore-Clients finden Sie unter Cloud Firestore-Clientbibliotheken .
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#
Rubin
Sichern Sie Ihre Daten
Wenn Sie das Web-, Android- oder Apple-Plattform-SDK verwenden, verwenden Sie Firebase-Authentifizierung und Cloud Firestore-Sicherheitsregeln , um Ihre Daten in Cloud Firestore zu schützen.
Hier sind einige grundlegende Regelsätze, die Sie für den Einstieg verwenden können. Sie können Ihre Sicherheitsregeln auf der Registerkarte „Regeln“ der Konsole ändern.
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;
}
}
}
Bevor Sie Ihre Web-, Android- oder iOS-App für die Produktion bereitstellen, ergreifen Sie außerdem Maßnahmen, um sicherzustellen, dass nur Ihre App-Clients auf Ihre Cloud Firestore-Daten zugreifen können. Weitere Informationen finden Sie in der App Check- Dokumentation.
Wenn Sie eines der Server-SDKs verwenden, verwenden Sie Identity and Access Management (IAM) , um Ihre Daten in Cloud Firestore zu schützen.
Sehen Sie sich ein Video-Tutorial an
Ausführliche Anleitungen zum Einstieg in die mobilen Client-Bibliotheken von Cloud Firestore finden Sie in einem der folgenden Video-Tutorials:
Netz
iOS+
Android
Weitere Videos finden Sie im YouTube-Kanal von Firebase.
Nächste Schritte
Vertiefen Sie Ihr Wissen mit folgenden Themen:
- Codelabs – Lernen Sie, Cloud Firestore in einer echten App zu verwenden, indem Sie dem Codelab für Android , iOS oder Web folgen.
- Datenmodell – Erfahren Sie mehr darüber, wie Daten in Cloud Firestore strukturiert sind, einschließlich hierarchischer Daten und Untersammlungen.
- Daten hinzufügen – Erfahren Sie mehr über das Erstellen und Aktualisieren von Daten in Cloud Firestore.
- Daten abrufen – Erfahren Sie mehr über das Abrufen von Daten.
- Einfache und zusammengesetzte Abfragen durchführen – Erfahren Sie, wie Sie einfache und zusammengesetzte Abfragen ausführen.
- Abfragen ordnen und begrenzen Erfahren Sie, wie Sie die von Ihren Abfragen zurückgegebenen Daten ordnen und begrenzen.