Z tego krótkiego wprowadzenia dowiesz się, jak skonfigurować Cloud Firestore, dodać dane, a potem wyświetlić dodane dane w konsoli Firebase.
Cloud Firestore obsługuje pakiety SDK na urządzenia mobilne i do internetu oraz biblioteki klienta serwera:
Cloud Firestore obsługuje pakiety SDK na Androida, iOS i do internetu. W połączeniu z Cloud Firestore Security Rules i Firebase Authentication pakiety SDK na urządzenia mobilne i do internetu obsługują bezserwerowe architektury aplikacji, w których klienci łączą się bezpośrednio z bazą danych Cloud Firestore.
Cloud Firestore obsługuje biblioteki klienta serwera w językach C#, Go, Java, Node.js, PHP, Python i Ruby. Użyj tych bibliotek klienta, aby skonfigurować uprzywilejowane środowiska serwera z pełnym dostępem do bazy danych. Więcej informacji o tych bibliotekach znajdziesz w krótkim wprowadzeniu do bibliotek klienta serwera.
Tworzenie bazy danych Cloud Firestore
Jeśli nie masz jeszcze projektu Firebase, utwórz go: w Firebasekonsoli kliknij Dodaj projekt, a potem postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby utworzyć projekt Firebase lub dodać usługi Firebase do istniejącego projektu Google Cloud.
Otwórz projekt w Firebasekonsoli. W panelu po lewej stronie rozwiń Kompilacja, a następnie kliknij Baza danych Firestore.
Kliknij Utwórz bazę danych.
Wybierz lokalizację bazy danych.
Jeśli nie możesz wybrać lokalizacji, oznacza to, że „lokalizacja domyślnych zasobów Google Cloud” w Twoim projekcie została już ustawiona. Niektóre zasoby projektu (np. domyślna instancjaCloud Firestore) mają wspólne zależności od lokalizacji, a ich lokalizację można ustawić podczas tworzenia projektu lub konfigurowania innej usługi, która ma te same zależności od lokalizacji.
Wybierz tryb początkowy Cloud Firestore Security Rules:
- Tryb testowy
Dobre rozwiązanie na początek korzystania z bibliotek klienta mobilnego i internetowego, ale umożliwia odczytywanie i nadpisywanie danych przez dowolną osobę. Po przetestowaniu koniecznie zapoznaj się z sekcją Zabezpieczanie danych.
Aby rozpocząć korzystanie z pakietu SDK na potrzeby internetu, platform Apple lub Androida, wybierz tryb testowy.
- Tryb produkcji
Odrzuca wszystkie odczyty i zapisy klientów mobilnych oraz internetowych. Uwierzytelnione serwery aplikacji (C#, Go, Java, Node.js, PHP, Python lub Ruby) nadal mogą uzyskiwać dostęp do bazy danych.
Aby rozpocząć korzystanie z biblioteki klienta serwera w języku C#, Go, Java, Node.js, PHP, Python lub Ruby, wybierz tryb produkcyjny.
Początkowy zestaw Cloud Firestore Security Rules zostanie zastosowany do domyślnej bazy danychCloud Firestore. Jeśli utworzysz wiele baz danych w projekcie, możesz wdrożyć Cloud Firestore Security Rules dla każdej z nich.
Kliknij Utwórz.
Gdy włączysz Cloud Firestore, włączy się też interfejs API w Cloud API Manager.
Konfigurowanie środowiska programistycznego
Dodaj do aplikacji wymagane zależności i biblioteki klienta.
Web
- Wykonaj instrukcje, aby dodać Firebase do aplikacji internetowej.
-
Pakiet SDK Cloud Firestore jest dostępny jako pakiet npm.
Musisz zaimportować zarówno Firebase, jak i Cloud Firestore.npm install firebase@12.8.0 --save
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
Web
- Wykonaj instrukcje, aby dodać Firebase do aplikacji internetowej.
- Dodaj do aplikacji biblioteki Firebase i Cloud Firestore:
Pakiet SDK Cloud Firestore jest też dostępny jako pakiet npm.<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>
Musisz ręcznie wymagać zarówno Firebase, jak i Cloud Firestore.npm install firebase@12.8.0 --save
import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
iOS+
Wykonaj instrukcje, aby dodać Firebase do aplikacji Apple.
Do instalacji zależności Firebase i do zarządzania nimi możesz używać menedżera pakietów Swift.
- Po otwarciu projektu aplikacji wybierz w Xcode opcję File > Swift Packages > Add Package Dependency (Plik > Pakiety Swift > Dodaj zależność pakietu).
- Gdy pojawi się prośba, dodaj repozytorium pakietu SDK Firebase na platformy Apple:
- Wybierz bibliotekę Firestore.
- Gdy skończysz, Xcode zacznie automatycznie wyszukiwać i pobierać zależności w tle.
https://github.com/firebase/firebase-ios-sdk
Android
- Wykonaj instrukcje, aby dodać Firebase do aplikacji na Androida.
- Korzystając z Firebase Android BoM, zadeklaruj zależność z biblioteką Cloud Firestore na Androida w pliku Gradle modułu (na poziomie aplikacji) (zwykle
app/build.gradle.ktslubapp/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") }
Gdy korzystamy z BOM Firebase na Androida, aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.
(Alternatywnie) Zadeklaruj zależności biblioteki Firebase bez użycia BoM
Jeśli nie chcesz używać Firebase BoM, musisz określić wersję każdej biblioteki Firebase w wierszu zależności.
Pamiętaj, że jeśli w aplikacji używasz kilku bibliotek Firebase, zdecydowanie zalecamy używanie BoM do zarządzania wersjami bibliotek, co zapewnia zgodność wszystkich wersji.
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") }
Szukasz modułu biblioteki przeznaczonego specjalnie dla języka Kotlin? Począwszy od październikowej wersji 2023 r. zarówno programiści Kotlin, jak i Java mogą korzystać z głównego modułu biblioteki (więcej informacji znajdziesz w tym artykule).
Dart
- Jeśli nie zostało to jeszcze zrobione, skonfiguruj i zainicjuj Firebase w aplikacji Flutter.
- W katalogu głównym projektu Flutter uruchom to polecenie, aby zainstalować wtyczkę:
flutter pub add cloud_firestore
- Po zakończeniu ponownie skompiluj aplikację Flutter:
flutter run
- Opcjonalnie: skróć czas kompilacji na iOS i macOS, dołączając wstępnie skompilowaną platformę.
Obecnie pakiet SDK Firestore na iOS zależy od kodu, którego kompilacja w Xcode może trwać ponad 5 minut. Aby znacznie skrócić czas kompilacji, możesz użyć wstępnie skompilowanej wersji, dodając ten wiersz do bloku
target 'Runner' dow pliku Podfile: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 endZastąp symbol IOS_SDK_VERSION wersją pakietu SDK Firebase na iOS podaną w pliku
firebase_corefirebase_sdk_version.rb. Jeśli nie używasz najnowszej wersjifirebase_core, poszukaj tego pliku w lokalnej pamięci podręcznej pakietu Pub (zwykle~/.pub-cache).Sprawdź też, czy masz CocoaPods w wersji 1.9.1 lub nowszej:
gem install cocoapods
Więcej informacji znajdziesz w artykule na GitHubie.
C++
- Postępuj zgodnie z instrukcjami, aby dodać Firebase do projektu C++.
- Interfejs C++ na Androida.
- Zależności Gradle Dodaj do pliku Gradle modułu (na poziomie aplikacji) (zwykle
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 }
- Zależności binarne. Podobnie zalecany sposób uzyskania zależności binarnych to dodanie do pliku
CMakeLists.txttego kodu: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}")
- Aby skonfigurować integrację z komputerem, przeczytaj artykuł Dodawanie Firebase do projektu C++.
Unity
- Postępuj zgodnie z instrukcjami, aby dodać Firebase do projektu w Unity.
- Skonfiguruj projekt w interfejsie Unity, aby zminimalizować kompilacje na Androida.
- Tę opcję znajdziesz w sekcji Ustawienia odtwarzacza > Android > Ustawienia publikowania > Minifikacja.
- Opcje mogą się różnić w zależności od wersji Unity, dlatego zapoznaj się z oficjalną dokumentacją Unity i przewodnikiem po debugowaniu kompilacji Firebase w Unity.
-
Jeśli po włączeniu minifikacji liczba metod, do których odwołuje się kod, nadal przekracza limit, możesz włączyć
multidexw:-
mainTemplate.gradlejeśli w sekcji Ustawienia odtwarzacza włączona jest opcja Niestandardowy szablon Gradle. -
lub plik
build.gradlena poziomie modułu, jeśli do tworzenia wyeksportowanego projektu używasz Androida Studio.
-
Aby uniknąć wyświetlania komunikatu Error while merging dex archives, musisz zminimalizować kompilację.
(Opcjonalnie) Tworzenie prototypów i testowanie za pomocą Firebase Local Emulator Suite
Zanim przejdziemy do tego, jak aplikacja dewelopera mobilnego zapisuje dane w Cloud Firestore i je odczytuje, przedstawimy zestaw narzędzi, których możesz używać do tworzenia prototypów i testowania funkcji Cloud Firestore:Firebase Local Emulator Suite Jeśli testujesz różne modele danych, optymalizujesz reguły bezpieczeństwa lub szukasz najbardziej opłacalnego sposobu interakcji z backendem, praca lokalna bez wdrażania usług na żywo może być świetnym rozwiązaniem.
Cloud Firestore Emulator jest częścią Local Emulator Suite, która umożliwia aplikacji interakcję z emulowaną zawartością bazy danych i konfiguracją, a także opcjonalnie z emulowanymi zasobami projektu (funkcjami, innymi bazami danych i regułami zabezpieczeń).
Korzystanie z Cloud Firestore emulatora wymaga wykonania tylko kilku czynności:
- Dodanie do konfiguracji testowej aplikacji wiersza kodu, który połączy ją z emulatorem.
- z katalogu głównego projektu lokalnego, uruchamiając
firebase emulators:start. - Wykonywanie wywołań z kodu prototypu aplikacji przy użyciu pakietu SDK platformy Cloud Firestore w zwykły sposób.
Dostępny jest szczegółowy przewodnik dotyczący Cloud Firestore i Cloud Functions. Zapoznaj się też z Local Emulator Suite wprowadzeniem.
Zainicjuj Cloud Firestore
Zainicjuj instancję 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);
Zastąp FIREBASE_CONFIGURATION adresem firebaseConfig aplikacji internetowej.
Aby zachować dane, gdy urządzenie utraci połączenie, zapoznaj się z dokumentacją Włączanie danych offline.
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();
Zastąp FIREBASE_CONFIGURATION adresem firebaseConfig aplikacji internetowej.
Aby zachować dane, gdy urządzenie utraci połączenie, zapoznaj się z dokumentacją Włączanie danych offline.
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;
Dodaj dane
Cloud Firestore przechowuje dane w dokumentach, które są przechowywane w kolekcjach. Cloud Firestore tworzy kolekcje i dokumenty niejawnie przy pierwszym dodaniu danych do dokumentu. Nie musisz jawnie tworzyć kolekcji ani dokumentów.
Utwórz nową kolekcję i dokument, korzystając z tego przykładowego kodu.
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."); });
Teraz dodaj kolejny dokument do kolekcji users. Zwróć uwagę, że ten dokument zawiera parę klucz-wartość (drugie imię), która nie występuje w pierwszym dokumencie. Dokumenty w kolekcji mogą zawierać różne zestawy informacji.
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."); });
Odczytywanie danych
Za pomocą przeglądarki danych w konsoli Firebase możesz szybko sprawdzić, czy dane zostały dodane do Cloud Firestore.
Możesz też użyć metody „get”, aby pobrać całą kolekcję.
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."); });
Zabezpieczanie danych
Jeśli używasz pakietu SDK na platformy internetowe, Android lub Apple, użyj uwierzytelniania Firebase i Cloud Firestore Security Rules, aby zabezpieczyć dane w Cloud Firestore.
Oto kilka podstawowych zestawów reguł, które pomogą Ci zacząć. Reguły zabezpieczeń możesz modyfikować na karcie Reguły w konsoli.
Wymagane uwierzytelnianie
// 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;
}
}
}
Tryb produkcji
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Zanim wdrożysz aplikację internetową lub aplikację na Androida lub iOS w wersji produkcyjnej, podejmij też działania, które zapewnią, że tylko Twoi klienci aplikacji będą mieć dostęp do Cloud Firestoredanych. Zapoznaj się z dokumentacją App Check.
Jeśli używasz jednego z pakietów SDK serwera, użyj Identity and Access Management (IAM), aby zabezpieczyć dane w Cloud Firestore.
Obejrzyj samouczek wideo
Szczegółowe wskazówki dotyczące rozpoczęcia korzystania z bibliotek klienta mobilnego Cloud Firestore znajdziesz w tych samouczkach wideo:
Sieć
iOS+
Android
Więcej filmów znajdziesz na kanale YouTube Firebase.
Dalsze kroki
Poszerz swoją wiedzę w tych obszarach:
- Codelabs – dowiedz się, jak używać Cloud Firestore w prawdziwej aplikacji, korzystając z codelabu na Androida, iOS lub sieć.
- Model danych – dowiedz się więcej o tym, jak dane są strukturyzowane w Cloud Firestore, w tym o danych hierarchicznych i podzbiorach.
- Dodawanie danych – dowiedz się więcej o tworzeniu i aktualizowaniu danych w Cloud Firestore.
- Pobieranie danych – dowiedz się więcej o pobieraniu danych.
- Wykonywanie prostych i złożonych zapytań – dowiedz się, jak uruchamiać proste i złożone zapytania.
- Porządkowanie i ograniczanie zapytań Dowiedz się, jak porządkować i ograniczać dane zwracane przez zapytania.