In dieser Kurzanleitung erfahren Sie, wie Sie Cloud Firestore einrichten, Daten hinzufügen und die gerade hinzugefügten Daten in der Firebase-Konsole ansehen.
Cloud Firestore unterstützt mobile oder Web-SDKs und Server-Clientbibliotheken:
Cloud Firestore unterstützt SDKs für Android, iOS, das Web und mehr. In Kombination mit Cloud Firestore Security Rules und Firebase Authentication unterstützen die Mobile- und Web-SDKs serverlose App-Architekturen, in denen Clients direkt mit Ihrer Cloud Firestore-Datenbank verbunden sind.
Cloud Firestore unterstützt Server-Clientbibliotheken für C#, Go, Java, Node.js, PHP, Python und Ruby. Mit diesen Clientbibliotheken können Sie privilegierte Serverumgebungen mit vollem Zugriff auf Ihre Datenbank einrichten. Weitere Informationen zu diesen Bibliotheken finden Sie in der Kurzanleitung für Server-Clientbibliotheken.
Cloud Firestore-Datenbank erstellen
Falls noch nicht geschehen, erstellen Sie ein Firebase-Projekt: Klicken Sie in der Firebase Console auf Projekt hinzufügen und folgen Sie der Anleitung auf dem Bildschirm, um ein Firebase-Projekt zu erstellen oder Firebase-Dienste für ein vorhandenes Google Cloud-Projekt hinzuzufügen.
Öffnen Sie Ihr Projekt in der Firebase-Konsole. Maximieren Sie im linken Bereich Build und wählen Sie dann Firestore-Datenbank aus.
Klicken Sie auf Datenbank erstellen.
Wählen Sie einen Speicherort für Ihre Datenbank aus.
Wenn Sie keinen Speicherort auswählen können, wurde der Speicherort für Standardressourcen Ihres Projekts bereits festgelegt.Google Cloud Einige Ressourcen Ihres Projekts (z. B. die Standardinstanz Cloud Firestore) haben eine gemeinsame Standortabhängigkeit. Ihr Standort kann entweder bei der Projekterstellung oder beim Einrichten eines anderen Dienstes festgelegt werden, der diese Standortabhängigkeit hat.
Wählen Sie einen Startmodus für Ihr Cloud Firestore Security Rules aus:
- Testmodus
Gut für die ersten Schritte mit den Mobil- und Web-Clientbibliotheken, allerdings können Ihre Daten von beliebigen Personen gelesen und überschrieben werden. Prüfen Sie nach dem Test den Abschnitt Daten schützen.
Wählen Sie den Testmodus aus, um mit dem Web-, Apple-Plattform- oder Android SDK zu beginnen.
- Produktionsmodus
Verweigert alle Lese- und Schreibvorgänge von Mobil- und Webclients. Ihre authentifizierten Anwendungsserver (C#, Go, Java, Node.js, PHP, Python oder Ruby) können weiterhin auf Ihre Datenbank zugreifen.
Wenn Sie die C#-, Go-, Java-, Node.js-, PHP-, Python- oder Ruby-Server-Clientbibliothek verwenden möchten, wählen Sie den Produktionsmodus aus.
Ihre erste Gruppe von Cloud Firestore Security Rules wird auf Ihre Standarddatenbank Cloud Firestore angewendet. Wenn Sie mehrere Datenbanken für Ihr Projekt erstellen, können Sie Cloud Firestore Security Rules für jede Datenbank bereitstellen.
Klicken Sie auf Erstellen.
Wenn Sie Cloud Firestore aktivieren, wird auch die API im Cloud API Manager aktiviert.
Entwicklungsumgebung einrichten
Fügen Sie Ihrer Anwendung die erforderlichen Abhängigkeiten und Clientbibliotheken hinzu.
Web
- Folgen Sie der Anleitung unter Firebase zu meiner Web-App hinzufügen.
-
Das Cloud Firestore SDK ist als npm-Paket verfügbar.
Sie müssen sowohl Firebase als auch Cloud Firestore importieren.npm install firebase@12.8.0 --save
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
Web
- Folgen Sie der Anleitung unter Firebase zu meiner Web-App hinzufügen.
- Fügen Sie Ihrer App die Firebase- und Cloud Firestore-Bibliotheken hinzu:
Das Cloud Firestore SDK ist auch als NPM-Paket verfügbar.<script src="https://www.gstatic.com/firebasejs/12.8.0/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/12.8.0/firebase-firestore-compat.js"></script>
Sie müssen Firebase und Cloud Firestore manuell anfordern.npm install firebase@12.8.0 --save
import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
iOS+
Folgen Sie der Anleitung unter Firebase zu meiner Apple-App hinzufügen.
Verwenden Sie Swift Package Manager, um Firebase-Abhängigkeiten zu installieren und zu verwalten.
- Öffnen Sie Ihr App-Projekt und gehen Sie in Xcode zu File > Swift Packages > Add Package Dependency (Datei > Swift-Pakete > Paketabhängigkeit hinzufügen).
- Fügen Sie bei entsprechender Aufforderung das Firebase Apple Platforms SDK-Repository hinzu:
- Wählen Sie die Firestore-Bibliothek aus.
- Wenn Sie fertig, beginnt Xcode automatisch, Ihre Abhängigkeiten im Hintergrund aufzulösen und herunterzuladen.
https://github.com/firebase/firebase-ios-sdk
Android
- Folgen Sie der Anleitung unter Firebase zu meiner Android-Anwendung hinzufügen.
- Deklarieren Sie mit der Firebase Android BoM die Abhängigkeit für die Cloud Firestore-Bibliothek für Android in der Gradle-Datei Ihres Moduls (auf App-Ebene) (in der Regel
app/build.gradle.ktsoderapp/build.gradle).dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:34.8.0")) // Declare the dependency for the Cloud Firestore library // When using the BoM, you don't specify versions in Firebase library dependencies implementation("com.google.firebase:firebase-firestore") }
Mit der Firebase Android BoM haben Sie immer eine kompatible Version der Firebase Android-Bibliotheken in Ihrer App.
(Alternative) Firebase-Bibliotheksabhängigkeiten ohne Verwendung von BoM deklarieren
Wenn Sie die Firebase BoM nicht verwenden möchten, müssen Sie die Version jeder Firebase-Bibliothek in der entsprechenden Abhängigkeitszeile angeben.
Wenn Sie mehrere Firebase-Bibliotheken in Ihrer App verwenden, empfehlen wir dringend, die BoM zur Verwaltung 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:26.1.0") }
Sie suchen nach einem Kotlin-spezifischen Bibliotheksmodul? Ab der Version vom Oktober 2023 können sowohl Kotlin- als auch Java-Entwickler das Hauptbibliotheksmodul verwenden. Weitere Informationen finden Sie in den FAQs 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 Plug-in zu installieren:
flutter pub add cloud_firestore
- Erstellen Sie Ihre Flutter-Anwendung neu:
flutter run
- Optional:Sie können die Build-Zeiten für iOS und macOS verkürzen, indem Sie das vorkompilierte Framework einbinden.
Derzeit hängt das Firestore SDK für iOS von Code ab, der in Xcode bis zu 5 Minuten zum Erstellen benötigt. Um die Build-Zeiten deutlich zu verkürzen, können Sie eine vorkompilierte Version verwenden. Fügen Sie dazu diese Zeile dem
target 'Runner' do-Block in Ihrer Podfile-Datei hinzu:target 'Runner' do use_frameworks! use_modular_headers! pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => 'IOS_SDK_VERSION' flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) target 'RunnerTests' do inherit! :search_paths end endErsetzen Sie IOS_SDK_VERSION durch die Version des Firebase iOS SDK, die in der Datei
firebase_sdk_version.rbvonfirebase_coreangegeben ist. Wenn Sie nicht die aktuelle Version vonfirebase_coreverwenden, suchen Sie in Ihrem lokalen Pub-Paketcache (normalerweise~/.pub-cache) nach dieser Datei.Achten Sie außerdem darauf, dass Sie CocoaPods auf Version 1.9.1 oder höher aktualisiert haben:
gem install cocoapods
Weitere Informationen finden Sie auf GitHub.
C++
- Folgen Sie der Anleitung unter Firebase zu einem C++-Projekt hinzufügen.
- C++-Schnittstelle für Android.
- Gradle-Abhängigkeiten. Fügen Sie der Gradle-Datei des Moduls (auf Anwendungsebene, in der Regel
app/build.gradle) Folgendes hinzu:android.defaultConfig.externalNativeBuild.cmake { arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir" } apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle" firebaseCpp.dependencies { // earlier entries auth firestore }
- Binäre Abhängigkeiten: Die empfohlene Methode zum Abrufen der binären Abhängigkeiten besteht darin, der Datei
CMakeLists.txtFolgendes 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 Desktopintegration finden Sie unter Firebase zu einem C++-Projekt hinzufügen.
Unity
- Folgen Sie der Anleitung unter Firebase zu einem Unity-Projekt hinzufügen.
- Verwenden Sie die Unity-Oberfläche, um Ihr Projekt für die Minimierung von Android-Builds zu konfigurieren.
- Sie finden die Option unter Player Settings > Android > Publishing Settings > Minify (Player-Einstellungen > Android > Veröffentlichungseinstellungen > Minimieren).
- Die Optionen können sich in verschiedenen Versionen von Unity unterscheiden. Sehen Sie sich daher die offizielle Unity-Dokumentation und den Firebase Unity Build Debug Guide an.
-
Wenn die Anzahl der referenzierten Methoden nach der Aktivierung der Minimierung immer noch das Limit überschreitet, können Sie
multidexin-
mainTemplate.gradle, wenn Benutzerdefinierte Gradle-Vorlage unter Playereinstellungen aktiviert ist -
oder die
build.gradle-Datei 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.
Optional: Prototyp erstellen und mit Firebase Local Emulator Suite testen
Bevor wir uns ansehen, wie Ihre App Daten in Cloud Firestore schreibt und daraus liest, möchten wir Ihnen einige Tools vorstellen, mit denen Sie die Cloud Firestore-Funktionen prototypisieren und testen können:Firebase Local Emulator Suite. Wenn Sie verschiedene Datenmodelle ausprobieren, Ihre Sicherheitsregeln optimieren oder nach der kostengünstigsten Möglichkeit suchen, mit dem Backend zu interagieren, kann es sinnvoll sein, lokal zu arbeiten, ohne Live-Dienste bereitzustellen.
Ein Cloud Firestore-Emulator ist Teil der Local Emulator Suite. Dadurch kann Ihre App mit den emulierten Datenbankinhalten und der Konfiguration sowie optional mit den emulierten Projektressourcen (Funktionen, anderen Datenbanken und Sicherheitsregeln) interagieren.
Die Verwendung des Cloud Firestore-Emulators umfasst nur wenige Schritte:
- Fügen Sie der Testkonfiguration Ihrer App eine Codezeile hinzu, um eine Verbindung zum Emulator herzustellen.
- Führen Sie
firebase emulators:startim Stammverzeichnis Ihres lokalen Projektverzeichnisses aus. - Aufrufe aus dem Prototypcode Ihrer App mit einem Cloud Firestore-Plattform-SDK wie gewohnt.
Eine detaillierte Schritt-für-Schritt-Anleitung für Cloud Firestore und Cloud Functions ist verfügbar. Sehen Sie sich auch die Local Emulator Suite-Einführung an.
Cloud Firestore initialisieren
Initialisieren Sie eine Instanz von Cloud Firestore:
Web
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = getFirestore(app);
Ersetzen Sie FIREBASE_CONFIGURATION durch die firebaseConfig Ihrer Webanwendung.
Informationen zum dauerhaften Sichern von Daten für den Fall, dass die Verbindung des Geräts unterbrochen wird, finden Sie in der Dokumentation Offlinedaten aktivieren.
Web
import firebase from "firebase/app"; import "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = firebase.firestore();
Ersetzen Sie FIREBASE_CONFIGURATION durch die firebaseConfig Ihrer Webanwendung.
Informationen zum dauerhaften Sichern von Daten für den Fall, dass die Verbindung des Geräts unterbrochen wird, finden Sie in der Dokumentation Offlinedaten aktivieren.
Swift
import FirebaseCore import FirebaseFirestore
FirebaseApp.configure() let db = Firestore.firestore()
Objective-C
@import FirebaseCore; @import FirebaseFirestore; // Use Firebase library to configure APIs [FIRApp configure];
FIRFirestore *defaultFirestore = [FIRFirestore firestore];
Kotlin
// Access a Cloud Firestore instance from your Activityval db = Firebase.firestore
Java
// Access a Cloud Firestore instance from your ActivityFirebaseFirestore db = FirebaseFirestore.getInstance();
Dart
db = FirebaseFirestore.instance;
C++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance(). App::Create(); Firestore* db = Firestore::GetInstance();
Unity
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
Daten hinzufügen
In Cloud Firestore werden Daten in Dokumenten gespeichert, die wiederum in Sammlungen gespeichert sind. Cloud Firestore erstellt Sammlungen und Dokumente implizit, wenn Sie dem Dokument zum ersten Mal Daten hinzufügen. Sie müssen Sammlungen oder Dokumente also nicht explizit anlegen.
Mit dem folgenden Beispielcode können Sie eine neue Sammlung und ein Dokument erstellen.
Web
import { collection, addDoc } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Ada", last: "Lovelace", born: 1815 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
Web
db.collection("users").add({ first: "Ada", last: "Lovelace", born: 1815 }) .then((docRef) => { console.log("Document written with ID: ", docRef.id); }) .catch((error) => { console.error("Error adding document: ", error); });
Swift
// Add a new document with a generated ID do { let ref = try await db.collection("users").addDocument(data: [ "first": "Ada", "last": "Lovelace", "born": 1815 ]) print("Document added with ID: \(ref.documentID)") } catch { print("Error adding document: \(error)") }
Objective-C
// Add a new document with a generated ID __block FIRDocumentReference *ref = [[self.db collectionWithPath:@"users"] addDocumentWithData:@{ @"first": @"Ada", @"last": @"Lovelace", @"born": @1815 } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error adding document: %@", error); } else { NSLog(@"Document added with ID: %@", ref.documentID); } }];
Kotlin
// Create a new user with a first and last name val user = hashMapOf( "first" to "Ada", "last" to "Lovelace", "born" to 1815, ) // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener { documentReference -> Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}") } .addOnFailureListener { e -> Log.w(TAG, "Error adding document", e) }
Java
// Create a new user with a first and last name Map<String, Object> user = new HashMap<>(); user.put("first", "Ada"); user.put("last", "Lovelace"); user.put("born", 1815); // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId()); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error adding document", e); } });
Dart
// Create a new user with a first and last name final user = <String, dynamic>{ "first": "Ada", "last": "Lovelace", "born": 1815 }; // Add a new document with a generated ID db.collection("users").add(user).then((DocumentReference doc) => print('DocumentSnapshot added with ID: ${doc.id}'));
C++
// Add a new document with a generated ID Future<DocumentReference> user_ref = db->Collection("users").Add({{"first", FieldValue::String("Ada")}, {"last", FieldValue::String("Lovelace")}, {"born", FieldValue::Integer(1815)}}); user_ref.OnCompletion([](const Future<DocumentReference>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot added with ID: " << future.result()->id() << std::endl; } else { std::cout << "Error adding document: " << future.error_message() << std::endl; } });
Unity
DocumentReference docRef = db.Collection("users").Document("alovelace"); Dictionary<string, object> user = new Dictionary<string, object> { { "First", "Ada" }, { "Last", "Lovelace" }, { "Born", 1815 }, }; docRef.SetAsync(user).ContinueWithOnMainThread(task => { Debug.Log("Added data to the alovelace document in the users collection."); });
Fügen Sie jetzt der Sammlung users ein weiteres Dokument hinzu. Beachten Sie, dass dieses Dokument ein Schlüssel/Wert-Paar (zweiter Vorname) enthält, das im ersten Dokument nicht auftaucht. Dokumente in einer Sammlung können unterschiedliche Informationen enthalten.
Web
// Add a second document with a generated ID. import { addDoc, collection } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
Web
// Add a second document with a generated ID. db.collection("users").add({ first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }) .then((docRef) => { console.log("Document written with ID: ", docRef.id); }) .catch((error) => { console.error("Error adding document: ", error); });
Swift
// Add a second document with a generated ID. do { let ref = try await db.collection("users").addDocument(data: [ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 ]) print("Document added with ID: \(ref.documentID)") } catch { print("Error adding document: \(error)") }
Objective-C
// Add a second document with a generated ID. __block FIRDocumentReference *ref = [[self.db collectionWithPath:@"users"] addDocumentWithData:@{ @"first": @"Alan", @"middle": @"Mathison", @"last": @"Turing", @"born": @1912 } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error adding document: %@", error); } else { NSLog(@"Document added with ID: %@", ref.documentID); } }];
Kotlin
// Create a new user with a first, middle, and last name val user = hashMapOf( "first" to "Alan", "middle" to "Mathison", "last" to "Turing", "born" to 1912, ) // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener { documentReference -> Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}") } .addOnFailureListener { e -> Log.w(TAG, "Error adding document", e) }
Java
// Create a new user with a first, middle, and last name Map<String, Object> user = new HashMap<>(); user.put("first", "Alan"); user.put("middle", "Mathison"); user.put("last", "Turing"); user.put("born", 1912); // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId()); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error adding document", e); } });
Dart
// Create a new user with a first and last name final user = <String, dynamic>{ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 }; // Add a new document with a generated ID db.collection("users").add(user).then((DocumentReference doc) => print('DocumentSnapshot added with ID: ${doc.id}'));
C++
db->Collection("users") .Add({{"first", FieldValue::String("Alan")}, {"middle", FieldValue::String("Mathison")}, {"last", FieldValue::String("Turing")}, {"born", FieldValue::Integer(1912)}}) .OnCompletion([](const Future<DocumentReference>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot added with ID: " << future.result()->id() << std::endl; } else { std::cout << "Error adding document: " << future.error_message() << std::endl; } });
Unity
DocumentReference docRef = db.Collection("users").Document("aturing"); Dictionary<string, object> user = new Dictionary<string, object> { { "First", "Alan" }, { "Middle", "Mathison" }, { "Last", "Turing" }, { "Born", 1912 } }; docRef.SetAsync(user).ContinueWithOnMainThread(task => { Debug.Log("Added data to the aturing document in the users collection."); });
Daten lesen
Verwenden Sie die Datenansicht in der Firebase Console, um schnell zu prüfen, ob Sie Daten zu Cloud Firestore hinzugefügt haben.
Sie können auch die Methode „get“ verwenden, um die gesamte Sammlung abzurufen.
Web
import { collection, getDocs } from "firebase/firestore"; const querySnapshot = await getDocs(collection(db, "users")); querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); });
Web
db.collection("users").get().then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); }); });
Swift
do { let snapshot = try await db.collection("users").getDocuments() for document in snapshot.documents { print("\(document.documentID) => \(document.data())") } } catch { print("Error getting documents: \(error)") }
Objective-C
[[self.db collectionWithPath:@"users"] getDocumentsWithCompletion:^(FIRQuerySnapshot * _Nullable snapshot, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error getting documents: %@", error); } else { for (FIRDocumentSnapshot *document in snapshot.documents) { NSLog(@"%@ => %@", document.documentID, document.data); } } }];
Kotlin
db.collection("users") .get() .addOnSuccessListener { result -> for (document in result) { Log.d(TAG, "${document.id} => ${document.data}") } } .addOnFailureListener { exception -> Log.w(TAG, "Error getting documents.", exception) }
Java
db.collection("users") .get() .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { if (task.isSuccessful()) { for (QueryDocumentSnapshot document : task.getResult()) { Log.d(TAG, document.getId() + " => " + document.getData()); } } else { Log.w(TAG, "Error getting documents.", task.getException()); } } });
Dart
await db.collection("users").get().then((event) { for (var doc in event.docs) { print("${doc.id} => ${doc.data()}"); } });
C++
Future<QuerySnapshot> users = db->Collection("users").Get(); users.OnCompletion([](const Future<QuerySnapshot>& future) { if (future.error() == Error::kErrorOk) { for (const DocumentSnapshot& document : future.result()->documents()) { std::cout << document << std::endl; } } else { std::cout << "Error getting documents: " << future.error_message() << std::endl; } });
Unity
CollectionReference usersRef = db.Collection("users"); usersRef.GetSnapshotAsync().ContinueWithOnMainThread(task => { QuerySnapshot snapshot = task.Result; foreach (DocumentSnapshot document in snapshot.Documents) { Debug.Log(String.Format("User: {0}", document.Id)); Dictionary<string, object> documentDictionary = document.ToDictionary(); Debug.Log(String.Format("First: {0}", documentDictionary["First"])); if (documentDictionary.ContainsKey("Middle")) { Debug.Log(String.Format("Middle: {0}", documentDictionary["Middle"])); } Debug.Log(String.Format("Last: {0}", documentDictionary["Last"])); Debug.Log(String.Format("Born: {0}", documentDictionary["Born"])); } Debug.Log("Read all data from the users collection."); });
Daten schützen
Wenn Sie das SDK für Web-, Android- oder Apple-Plattformen verwenden, schützen Sie Ihre Daten in Cloud Firestore mit Firebase Authentication und Cloud Firestore Security Rules.
Hier sind einige grundlegende Regelsätze, die Sie für den Einstieg verwenden können. Sie können Ihre Sicherheitsregeln auf dem Tab „Regeln“ der Konsole ändern.
Auth erforderlich
// Allow read/write access to a document keyed by the user's UID
service cloud.firestore {
match /databases/{database}/documents {
match /users/{uid} {
allow read, write: if request.auth != null && request.auth.uid == uid;
}
}
}
Produktionsmodus
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Bevor Sie Ihre Web-, Android- oder iOS-App in der Produktion bereitstellen, sollten Sie auch dafür sorgen, dass nur Ihre App-Clients auf Ihre Cloud Firestore-Daten zugreifen können. Weitere Informationen finden Sie in der App Check-Dokumentation.
Wenn Sie eines der Server-SDKs verwenden, nutzen Sie die Identitäts- und Zugriffsverwaltung (Identity and Access Management, IAM), um Ihre Daten in Cloud Firestore zu schützen.
Videoanleitung ansehen
Eine ausführliche Anleitung zu den ersten Schritten mit den Cloud Firestore-Mobil-Clientbibliotheken erhalten Sie in den folgenden Videoanleitungen:
Web
iOS+
Android
Weitere Videos finden Sie im Firebase-YouTube-Kanal.
Weitere Informationen
Vertiefen Sie Ihr Wissen mit folgenden Themen:
- Codelabs – Erfahren Sie, wie Sie Cloud Firestore in einer realen App verwenden. Verwenden Sie dazu das Codelab für Android, iOS oder Web.
- Datenmodell – Erfahren Sie mehr über die Strukturierung von Daten in Cloud Firestore, einschließlich hierarchischer Daten und untergeordneter Sammlungen.
- Daten hinzufügen – Erfahren Sie mehr über das Erstellen und Aktualisieren von Daten in Cloud Firestore.
- Daten abrufen – Erfahren Sie mehr über das Abrufen von Daten.
- Einfache und komplexe Abfragen ausführen — Erfahren Sie, wie Sie einfache und komplexe Abfragen ausführen.
- Abfragen sortieren und begrenzen: Erfahren Sie, wie Sie die von Ihren Abfragen zurückgegebenen Daten sortieren und begrenzen.