Ten przewodnik zawiera informacje o tym, jak skonfigurować Cloud Firestore, dodać dane, a potem wyświetlić je w konsoli Firebase.
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ń Build (Kompilacja), a następnie wybierz Firestore database (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 dla Cloud Firestore Security Rules:
- Tryb testowy
Dobre rozwiązanie na początek pracy z bibliotekami klienta mobilnego i internetowego, ale umożliwia każdemu odczytywanie i zastępowanie danych. 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 blokady
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 zablokowany.
Początkowy zestaw Cloud Firestore Security Rules będzie dotyczyć 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, interfejs API zostanie też włączony 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.0.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.0.0/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/12.0.0/firebase-firestore-compat.js"></script>
Musisz ręcznie wymagać zarówno Firebase, jak i Cloud Firestore.npm install firebase@12.0.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.kts
lubapp/build.gradle
).dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:33.16.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 wielu 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:25.1.4") }
Szukasz modułu biblioteki przeznaczonego specjalnie dla języka Kotlin? Od października 2023 r. deweloperzy korzystający z języków Kotlin i Java mogą używać głównego modułu biblioteki (więcej informacji znajdziesz w odpowiedziach na najczęstsze pytania dotyczące tej inicjatywy).
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' do
w 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 end
Zastąp symbol IOS_SDK_VERSION wersją pakietu SDK Firebase na iOS podaną w pliku
firebase_core
firebase_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
).Dodatkowo upewnij się, że CocoaPods jest zaktualizowany do wersji 1.9.1 lub nowszej:
gem install cocoapods
Więcej informacji znajdziesz w artykule na GitHubie.
Java
- Dodaj do aplikacji pakiet Firebase Admin SDK:
-
Korzystanie z Gradle:
compile 'com.google.firebase:firebase-admin:1.32.0'
-
Korzystanie z Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>1.32.0</version> </dependency>
-
Korzystanie z Gradle:
- Aby zainicjować Cloud Firestore za pomocą odpowiednich danych logowania w swoim środowisku, wykonaj podane niżej instrukcje.
Python
- Dodaj pakiet Firebase Admin SDK do aplikacji w Pythonie:
pip install --upgrade firebase-admin
- Aby zainicjować Cloud Firestore za pomocą odpowiednich danych logowania w swoim środowisku, wykonaj podane niżej instrukcje.
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) (zazwyczaj
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.txt
tego 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 > Zmniejszanie rozmiaru.
- 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ć
multidex
w:-
mainTemplate.gradle
jeśli w sekcji Ustawienia odtwarzacza włączona jest opcja Niestandardowy szablon Gradle. -
lub plik
build.gradle
na poziomie modułu, jeśli do tworzenia wyeksportowanego projektu używasz Android Studio.
-
Aby uniknąć wyświetlania komunikatu Error while merging dex archives
, musisz zminimalizować kompilację.
Node.js
-
Dodaj do aplikacji pakiet Firebase Admin SDK:
npm install firebase-admin --save
- Aby zainicjować Cloud Firestore za pomocą odpowiednich danych logowania w swoim środowisku, wykonaj podane niżej instrukcje.
Go
- Dodaj pakiet SDK Firebase Admin do aplikacji w Go:
go get firebase.google.com/go
- Aby zainicjować Cloud Firestore za pomocą odpowiednich danych logowania w swoim środowisku, wykonaj podane niżej instrukcje.
PHP
-
Biblioteki klienta serwera Cloud Firestore (Java, Node.js, Python, Go, PHP, C# i Ruby) do uwierzytelniania używają domyślnych danych logowania aplikacji Google.
-
Aby uwierzytelnić się w środowisku deweloperskim, ustaw zmienną środowiskową
GOOGLE_APPLICATION_CREDENTIALS
tak, aby wskazywała plik JSON z kluczem konta usługi. Plik klucza możesz utworzyć na stronie Dane logowania w konsoli interfejsów API.export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- W środowisku produkcyjnym nie musisz się uwierzytelniać, jeśli uruchamiasz aplikację w App Engine lub Compute Engine w tym samym projekcie, którego używasz w Cloud Firestore. W przeciwnym razie skonfiguruj konto usługi.
-
Aby uwierzytelnić się w środowisku deweloperskim, ustaw zmienną środowiskową
- Zainstaluj i włącz rozszerzenie gRPC dla PHP, które jest potrzebne do korzystania z biblioteki klienta.
-
Dodaj do aplikacji bibliotekę PHP Cloud Firestore:
composer require google/cloud-firestore
C#
-
Biblioteki klienta serwera Cloud Firestore (Java, Node.js, Python, Go, PHP, C# i Ruby) do uwierzytelniania używają domyślnych danych logowania aplikacji Google.
-
Aby uwierzytelnić się w środowisku deweloperskim, ustaw zmienną środowiskową
GOOGLE_APPLICATION_CREDENTIALS
tak, aby wskazywała plik JSON z kluczem konta usługi. Plik klucza możesz utworzyć na stronie Dane logowania w konsoli interfejsów API.export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- W środowisku produkcyjnym nie musisz się uwierzytelniać, jeśli uruchamiasz aplikację w App Engine lub Compute Engine w tym samym projekcie, którego używasz w Cloud Firestore. W przeciwnym razie skonfiguruj konto usługi.
-
Aby uwierzytelnić się w środowisku deweloperskim, ustaw zmienną środowiskową
-
Dodaj bibliotekę C# Cloud Firestore do aplikacji w pliku
.csproj
:<ItemGroup> <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" /> </ItemGroup>
-
Dodaj do pliku
Program.cs
te wiersze:using Google.Cloud.Firestore;
Ruby
-
Biblioteki klienta serwera Cloud Firestore (Java, Node.js, Python, Go, PHP, C# i Ruby) do uwierzytelniania używają domyślnych danych logowania aplikacji Google.
-
Aby uwierzytelnić się w środowisku deweloperskim, ustaw zmienną środowiskową
GOOGLE_APPLICATION_CREDENTIALS
tak, aby wskazywała plik JSON z kluczem konta usługi. Plik klucza możesz utworzyć na stronie Dane logowania w konsoli interfejsów API.export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- W środowisku produkcyjnym nie musisz się uwierzytelniać, jeśli uruchamiasz aplikację w App Engine lub Compute Engine w tym samym projekcie, którego używasz w Cloud Firestore. W przeciwnym razie skonfiguruj konto usługi.
-
Aby uwierzytelnić się w środowisku deweloperskim, ustaw zmienną środowiskową
-
Dodaj bibliotekę Cloud Firestore Ruby do aplikacji w pliku
Gemfile
:gem "google-cloud-firestore"
-
Zainstaluj zależności z
Gemfile
za pomocą tego polecenia:bundle install
(Opcjonalnie) Tworzenie prototypów i testowanie za pomocą Firebase Local Emulator Suite
Zanim omówimy, jak aplikacja dewelopera mobilnego zapisuje dane w Cloud Firestore i je z niej odczytuje, przedstawimy zestaw narzędzi, których możesz używać do prototypowania 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 pomysłem.
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.
- Uruchom
firebase emulators:start
w katalogu głównym projektu lokalnego. - Wywoływanie funkcji z kodu prototypu aplikacji za pomocą 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 URL aplikacji internetowej firebaseConfig
.
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 URL aplikacji internetowej firebaseConfig
.
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 Activity
val db = Firebase.firestore
Java
// Access a Cloud Firestore instance from your Activity
FirebaseFirestore db = FirebaseFirestore.getInstance();
Dart
db = FirebaseFirestore.instance;
Java
Cloud Firestore Pakiet SDK jest inicjowany na różne sposoby w zależności od środowiska. Poniżej znajdziesz najpopularniejsze metody. Pełne informacje znajdziesz w artykule Inicjowanie pakietu 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();
Aby używać pakietu Firebase Admin SDK na własnym serwerze, użyj konta usługi.
W konsoli Google Cloud otwórz stronę Administracja > Konta usługi. Wygeneruj nowy klucz prywatny i zapisz plik JSON. Następnie użyj pliku do zainicjowania pakietu SDK:
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
Cloud Firestore Pakiet SDK jest inicjowany na różne sposoby w zależności od środowiska. Poniżej znajdziesz najpopularniejsze metody. Pełne informacje znajdziesz w artykule Inicjowanie pakietu Admin SDK.import firebase_admin from firebase_admin import firestore # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore.client()
Do zainicjowania pakietu SDK można też użyć istniejącego domyślnego uwierzytelniania aplikacji.
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()
Aby używać pakietu Firebase Admin SDK na własnym serwerze, użyj konta usługi.
W konsoli Google Cloud otwórz stronę Administracja > Konta usługi. Wygeneruj nowy klucz prywatny i zapisz plik JSON. Następnie użyj pliku do zainicjowania pakietu SDK:
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
Cloud Firestore Pakiet SDK jest inicjowany na różne sposoby w zależności od środowiska. Poniżej znajdziesz najpopularniejsze metody. Pełne informacje znajdziesz w artykule Inicjowanie pakietu 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()
Do zainicjowania pakietu SDK można też użyć istniejącego domyślnego uwierzytelniania aplikacji.
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()
Aby używać pakietu Firebase Admin SDK na własnym serwerze, użyj konta usługi.
W konsoli Google Cloud otwórz stronę Administracja > Konta usługi. Wygeneruj nowy klucz prywatny i zapisz plik JSON. Następnie użyj pliku do zainicjowania pakietu SDK:
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
Cloud Firestore Pakiet SDK jest inicjowany na różne sposoby w zależności od środowiska. Poniżej znajdziesz najpopularniejsze metody. Pełne informacje znajdziesz w artykule Inicjowanie pakietu Admin SDK.-
Zainicjuj Cloud Functions
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp(); const db = getFirestore();
-
Zainicjuj 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();
-
Inicjowanie na własnym serwerze
Aby używać pakietu Firebase Admin SDK na własnym serwerze (lub w dowolnym innym środowisku Node.js), użyj konta usługi. W konsoli Google Cloud otwórz Administracja > Konta usługi. Wygeneruj nowy klucz prywatny i zapisz plik JSON. Następnie użyj pliku do zainicjowania pakietu SDK:
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();
Go
Cloud Firestore Pakiet SDK jest inicjowany na różne sposoby w zależności od środowiska. Poniżej znajdziesz najpopularniejsze metody. Pełne informacje znajdziesz w artykule Inicjowanie pakietu 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()
Aby używać pakietu Firebase Admin SDK na własnym serwerze, użyj konta usługi.
W konsoli Google Cloud otwórz stronę Administracja > Konta usługi. Wygeneruj nowy klucz prywatny i zapisz plik JSON. Następnie użyj pliku do zainicjowania pakietu SDK:
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
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz w sekcji Cloud FirestoreBiblioteki klienta.
Unity
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
C#
C#
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz w sekcji Cloud FirestoreBiblioteki klienta.
Ruby
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}'));
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
Go
PHP
PHP
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz w sekcji Cloud FirestoreBiblioteki klienta.
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."); });
C#
Ruby
Teraz dodaj kolejny dokument do kolekcji users
. Zwróć uwagę, że ten dokument zawiera parę klucz-wartość (imię środkowe), 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}'));
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
Go
PHP
PHP
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz w sekcji Cloud FirestoreBiblioteki klienta.
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."); });
C#
Ruby
Odczytywanie danych
Aby szybko sprawdzić, czy dane zostały dodane do Cloud Firestore, użyj przeglądarki danych w konsoli Firebase.
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()}"); } });
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
Go
PHP
PHP
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz w sekcji Cloud FirestoreBiblioteki klienta.
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."); });
C#
Ruby
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 blokady
// 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 klienci Twojej 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, do zabezpieczenia danych w Cloud Firestore użyj Identity and Access Management (IAM).
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 Firebase w YouTube.
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.