Ten przewodnik po konfiguracji zawiera instrukcje konfigurowania usługi Cloud Firestore, dodawania danych i wyświetlania ich w konsoli Firebase.
Tworzenie bazy danych Cloud Firestore
Jeśli nie masz jeszcze projektu Firebase, utwórz go: w konsoli Firebase 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 konsoli Firebase. W panelu po lewej stronie rozwiń Tworzenie i wybierz Baza danych Firestore.
Kliknij Utwórz bazę danych.
Wybierz lokalizację bazy danych.
Jeśli nie możesz wybrać lokalizacji, „lokalizacja domyślnych zasobów Google Cloud” w Twoim projekcie została już ustawiona. Niektóre zasoby projektu (np. domyślna instancja Cloud Firestore) mają wspólną zależność od lokalizacji, a ich lokalizację można ustawić podczas tworzenia projektu lub konfigurowania innej usługi, która ma tę samą zależność od lokalizacji.
Wybierz tryb początkowy dla Cloud Firestore Security Rules:
- Tryb testowy
Jest to dobre rozwiązanie na początek korzystania z bibliotek klienta mobilnego i internetowego, ale pozwala każdemu odczytywać i zapisywać Twoje dane. Po przetestowaniu koniecznie zapoznaj się z sekcją Bezpieczeństwo danych.
Aby rozpocząć korzystanie z sieci, platform Apple lub pakietu Android SDK, wybierz tryb testowy.
- Tryb blokady
Odrzuca wszystkie odczyty i zapisy z klientów mobilnych i internetowych. Zalogowane serwery aplikacji (w językach C#, Go, Java, Node.js, PHP, Python lub Ruby) nadal mają dostęp do Twojej bazy danych.
Aby zacząć korzystać z biblioteki klienta serwera w języku C#, Go, Java, Node.js, PHP, Python lub Ruby, wybierz tryb zablokowany.
Początkowy zestaw wartości Cloud Firestore Security Rules zostanie zastosowany do domyślnej bazy danych Cloud Firestore. Jeśli utworzysz w projekcie wiele baz danych, 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 Menedżerze interfejsów API w chmurze.
Konfigurowanie środowiska programistycznego
Dodaj do aplikacji wymagane zależności i biblioteki klienta.
Web
- Wykonaj instrukcje, aby dodać Firebase do aplikacji internetowej.
- Dodaj do aplikacji biblioteki Firebase i Cloud Firestore:
<script src="https://www.gstatic.com/firebasejs/11.0.2/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/11.0.2/firebase-firestore-compat.js"></script>
Pakiet SDK Cloud Firestore jest też dostępny jako pakiet npm.npm install firebase@11.0.2 --save
Musisz ręcznie wymagać zarówno Firebase, jak i Cloud Firestore.import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
Web
- Wykonaj instrukcje, aby dodać Firebase do aplikacji internetowej.
-
Pakiet SDK Cloud Firestore jest dostępny jako pakiet npm.
npm install firebase@11.0.2 --save
Musisz zaimportować dane z Firebase i Cloud Firestore.import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS+
Postępuj zgodnie z instrukcjami, aby dodać Firebase do aplikacji Apple.
Do instalacji zależności Firebase i zarządzania nimi możesz używać menedżera pakietów Swift.
- Po otwarciu projektu aplikacji w Xcode wybierz Plik > Pakiety Swift > Dodaj zależność pakietu.
- Gdy pojawi się prośba, dodaj repozytorium pakietu SDK Firebase na platformy Apple:
- Wybierz bibliotekę Firestore.
- Gdy to zrobisz, Xcode automatycznie zacznie wyszukiwać i pobierać zależności w tle.
https://github.com/firebase/firebase-ios-sdk
Android
- Postępuj zgodnie z instrukcjami, aby dodać Firebase do aplikacji na Androida.
- Korzystając z BOM Firebase na Androida, 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.7.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") }
Dzięki użyciu BOM Firebase na Androida Twoja aplikacja będzie zawsze używała zgodnych wersji bibliotek Firebase na Androida.
(Alternatywnie) Zadeklaruj zależności biblioteki Firebase bez BoM
Jeśli z niego nie korzystasz, musisz podać każdą wersję biblioteki Firebase w linii zależności.Firebase BoM
Jeśli w swojej aplikacji używasz kilku bibliotek Firebase, zdecydowanie zalecamy korzystanie z funkcji BoM, aby zarządzać wersjami bibliotek. Dzięki temu wszystkie wersje będą ze sobą zgodne.
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.1") }
Szukasz modułu biblioteki dla Kotlina? Od wersji z października 2023 roku zarówno deweloperzy Kotlina, jak i Java mogą korzystać z głównego modułu biblioteki (szczegółowe informacje znajdziesz w często zadawanych pytaniach dotyczących tej inicjatywy).
Dart
- Jeśli nie zostało to jeszcze zrobione, skonfiguruj i inicjuj Firebase w aplikacji Flutter.
- W katalogu głównym projektu Flutter uruchom to polecenie, aby zainstalować wtyczkę:
flutter pub add cloud_firestore
- Po zakończeniu kompilowania ponownie skompiluj aplikację Flutter:
flutter run
- Opcjonalnie: skrócenie czasu kompilacji na iOS i macOS dzięki uwzględnieniu wstępnie skompilowanego frameworku.
Obecnie pakiet SDK Firestore na iOS korzysta z kodu, którego kompilacja w Xcode może potrwać 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 IOS_SDK_VERSION wersją pakietu SDK Firebase na iOS określoną w pliku
firebase_sdk_version.rb
aplikacjifirebase_core
. Jeśli nie używasz najnowszej wersjifirebase_core
, poszukaj tego pliku w miejscowym pamięci podręcznej pakietu Pub (zwykle~/.pub-cache
).Upewnij się też, że CocoaPods zostały zaktualizowane do wersji 1.9.1 lub nowszej:
gem install cocoapods
Więcej informacji znajdziesz w problemie na GitHubie.
Java
- Dodaj do aplikacji pakiet Firebase Admin SDK:
-
Używanie Gradle:
compile 'com.google.firebase:firebase-admin:1.32.0'
-
Za pomocą Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>1.32.0</version> </dependency>
-
Używanie Gradle:
- Aby zainicjować usługę Cloud Firestore w swoim środowisku przy użyciu odpowiednich danych logowania, wykonaj podane niżej instrukcje.
Python
- Dodaj do aplikacji Pythona pakiet SDK Firebase Admin:
pip install --upgrade firebase-admin
- Aby zainicjować usługę Cloud Firestore w swoim środowisku przy użyciu odpowiednich danych logowania, wykonaj podane niżej instrukcje.
C++
- Postępuj zgodnie z instrukcjami, aby dodać Firebase do projektu C++.
- Interfejs C++ na Androida.
- Zależność Gradle. Dodaj ten fragment kodu 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 }
- binarne zależności, Podobnie zalecany sposób uzyskania zależności binarnych to dodanie do pliku
CMakeLists.txt
następujących informacji: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 komputera, przeczytaj artykuł Dodawanie Firebase do projektu C++.
Unity
- Postępuj zgodnie z instrukcjami, aby dodać Firebase do projektu Unity.
- Użyj interfejsu Unity, aby skonfigurować projekt w celu kompresji wersji na Androida.
- Opcję znajdziesz w sekcji Ustawienia odtwarzacza > Android > Publishing Settings > Minify.
- Opcje mogą się różnić w zależności od wersji Unity, dlatego zapoznaj się z oficjalną dokumentacją Unity i przewodnikiem po debugowaniu wersji skompilowanej w Unity w Firebase.
-
Jeśli po włączeniu kompresji liczba odwołań do metod nadal przekracza limit, możesz też włączyć
multidex
w tych miejscach:-
mainTemplate.gradle
jeśli Szablon niestandardowy Gradle w sekcji Ustawienia odtwarzacza jest włączony -
Jeśli używasz Android Studio do kompilowania wyeksportowanego projektu, wybierz plik
build.gradle
na poziomie modułu.
-
Aby uniknąć komunikatu Error while merging dex archives
, musisz zoptymalizować kompilację.
Node.js
-
Dodaj do aplikacji pakiet Firebase Admin SDK:
npm install firebase-admin --save
- Aby zainicjować usługę Cloud Firestore w swoim środowisku przy użyciu odpowiednich danych logowania, wykonaj podane niżej instrukcje.
Go
- Dodaj do aplikacji Go pakiet Firebase Admin SDK:
go get firebase.google.com/go
- Aby zainicjować usługę Cloud Firestore w swoim środowisku przy użyciu odpowiednich danych logowania, wykonaj podane niżej instrukcje.
PHP
-
Biblioteki klienta serwera Cloud Firestore (Java, Node.js, Python, Go, PHP, C# i Ruby) używają do uwierzytelniania domyślnych danych logowania aplikacji Google.
-
Aby uwierzytelnić się w środowisku programistycznym, ustaw zmienną środowiskową
GOOGLE_APPLICATION_CREDENTIALS
tak, aby wskazywała na plik klucza konta usługi w formacie JSON. Plik klucza możesz utworzyć na stronie Dane logowania konsoli interfejsu API.export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- W środowisku produkcyjnym nie musisz się uwierzytelniać, jeśli uruchamiasz aplikację na platformie App Engine lub Compute Engine, używając tego samego projektu, którego używasz do Cloud Firestore. W przeciwnym razie skonfiguruj konto usługi.
-
Aby uwierzytelnić się w środowisku programistycznym, ustaw zmienną środowiskową
- Zainstaluj i włącz rozszerzenie gRPC do PHP, którego będziesz potrzebować 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) używają do uwierzytelniania domyślnych danych logowania aplikacji Google.
-
Aby uwierzytelnić się w środowisku programistycznym, ustaw zmienną środowiskową
GOOGLE_APPLICATION_CREDENTIALS
tak, aby wskazywała na plik klucza konta usługi w formacie JSON. Plik klucza możesz utworzyć na stronie Dane logowania konsoli interfejsu API.export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- W środowisku produkcyjnym nie musisz się uwierzytelniać, jeśli uruchamiasz aplikację na platformie App Engine lub Compute Engine, używając tego samego projektu, którego używasz do Cloud Firestore. W przeciwnym razie skonfiguruj konto usługi.
-
Aby uwierzytelnić się w środowisku programistycznym, ustaw zmienną środowiskową
-
Dodaj bibliotekę Cloud Firestore w C# do aplikacji w pliku
.csproj
:<ItemGroup> <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" /> </ItemGroup>
-
Dodaj do pliku
Program.cs
te informacje:using Google.Cloud.Firestore;
Ruby
-
Biblioteki klienta serwera Cloud Firestore (Java, Node.js, Python, Go, PHP, C# i Ruby) używają do uwierzytelniania domyślnych danych logowania aplikacji Google.
-
Aby uwierzytelnić się w środowisku programistycznym, ustaw zmienną środowiskową
GOOGLE_APPLICATION_CREDENTIALS
tak, aby wskazywała na plik klucza konta usługi w formacie JSON. Plik klucza możesz utworzyć na stronie Dane logowania konsoli interfejsu API.export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- W środowisku produkcyjnym nie musisz się uwierzytelniać, jeśli uruchamiasz aplikację na platformie App Engine lub Compute Engine, używając tego samego projektu, którego używasz do Cloud Firestore. W przeciwnym razie skonfiguruj konto usługi.
-
Aby uwierzytelnić się w środowisku programistycznym, ustaw zmienną środowiskową
-
Dodaj do aplikacji bibliotekę Ruby Cloud Firestore w sekcji
Gemfile
:gem "google-cloud-firestore"
-
Zainstaluj zależności z poziomu
Gemfile
, używając:bundle install
(Opcjonalnie) Prototypowanie i testowanie za pomocą Firebase Local Emulator Suite
Deweloperzy aplikacji mobilnych: zanim omówimy sposób zapisywania i odczytywania danych przez aplikację w Cloud Firestore, zapoznamy Cię z zestawem narzędzi, których możesz używać do prototypowania i testowania funkcji Cloud Firestore:Firebase Local Emulator Suite. Jeśli chcesz wypróbować różne modele danych, zoptymalizować reguły zabezpieczeń lub znaleźć najbardziej opłacalny sposób interakcji z backendem, warto pracować lokalnie bez wdrażania usług na żywo.
Emulator Cloud Firestore jest częścią Local Emulator Suite, która umożliwia aplikacji interakcję z emulowaną zawartością i konfiguracją bazy danych, a także opcjonalnie z emulowanymi zasobami projektu (funkcjami, innymi bazami danych i regułami zabezpieczeń).
Korzystanie z emulatora Cloud Firestore wymaga wykonania kilku czynności:
- Dodanie linii kodu do konfiguracji testowej aplikacji, aby połączyć się z emulatorem.
- W katalogu głównym lokalnego katalogu projektu uruchom
firebase emulators:start
. - Wykonywanie wywołań z prototypowego kodu aplikacji za pomocą pakietu SDK platformy Cloud Firestore w zwykły sposób.
Dostępny jest szczegółowy samouczek dotyczący funkcji Cloud Firestore i Cloud Functions. Zapoznaj się też z Local Emulator Suitewprowadzeniem.
Inicjowanie Cloud Firestore
Inicjalizacja instancji 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 nazwą firebaseConfig
Twojej 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 nazwą firebaseConfig
Twojej 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+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
Pakiet SDK Cloud Firestore jest inicjowany na różne sposoby w zależności od środowiska. Poniżej znajdziesz najpopularniejsze metody. Pełny opis 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 tego 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
Pakiet SDK Cloud Firestore jest inicjowany na różne sposoby w zależności od środowiska. Poniżej znajdziesz najpopularniejsze metody. Pełny opis 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ących domyślnych danych logowania 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 tego 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
Pakiet SDK Cloud Firestore jest inicjowany na różne sposoby w zależności od środowiska. Poniżej znajdziesz najpopularniejsze metody. Pełny opis 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ących domyślnych danych logowania 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 tego 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
Pakiet SDK Cloud Firestore jest inicjowany na różne sposoby w zależności od środowiska. Poniżej znajdziesz najpopularniejsze metody. Pełny opis znajdziesz w artykule Inicjowanie pakietu Admin SDK.-
Inicjowanie na Cloud Functions
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp(); const db = getFirestore();
-
Inicjowanie na 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 stronę Administracja > Konta usługi. Wygeneruj nowy klucz prywatny i zapisz plik JSON. Następnie użyj tego 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
Pakiet SDK Cloud Firestore jest inicjowany na różne sposoby w zależności od środowiska. Poniżej znajdziesz najpopularniejsze metody. Pełny opis 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 tego 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 artykule Cloud Firestore Biblioteki 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 artykule Cloud Firestore Biblioteki klienta.
Ruby
Dodaj dane
Cloud Firestore przechowuje dane w dokumentach, które są przechowywane w kolekcjach. Cloud Firestore tworzy kolekcje i dokumenty w sposób domyślny, gdy po raz pierwszy dodasz dane do dokumentu. Nie musisz 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+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
Go
PHP
PHP
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz w artykule Cloud Firestore Biblioteki 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ść (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+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
Go
PHP
PHP
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz w artykule Cloud Firestore Biblioteki 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 do tabeli Cloud Firestore zostały dodane dane, użyj w konsoli Firebase podglądu danych.
Możesz też użyć metody „get” do pobrania całej kolekcji.
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+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
Go
PHP
PHP
Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz w artykule Cloud Firestore Biblioteki 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
Bezpieczeństwo danych
Jeśli używasz pakietu SDK na platformy internetową, Androida lub Apple, zabezpiecz swoje dane za pomocą usługi Firebase Authentication i Cloud Firestore Security Rules.Cloud Firestore
Oto kilka podstawowych zestawów reguł, których możesz użyć na początek. 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ą, aplikację na Androida lub aplikację na iOS w wersji produkcyjnej, zadbaj o to, aby tylko klienci aplikacji mieli dostęp do Twoich danych Cloud Firestore. Zapoznaj się z dokumentacją sprawdzania aplikacji.
Jeśli używasz jednego z pakietów SDK serwera, użyj usługi zarządzania tożsamościami i dostępem (IAM), aby zabezpieczyć dane w Cloud Firestore.
Obejrzyj samouczek wideo
Aby dowiedzieć się, jak zacząć korzystać z bibliotek klienta Cloud Firestore na urządzeniach mobilnych, obejrzyj jeden z tych samouczków wideo:
Sieć
iOS+
Android
Więcej filmów znajdziesz na kanale Firebase w YouTube.
Dalsze kroki
Poszerz swoją wiedzę na te tematy:
- Codelabs – dowiedz się, jak używać Cloud Firestore w rzeczywistej aplikacji, wykonując ćwiczenia Codelab na Androida, iOS lub internet.
- Model danych – dowiedz się więcej o strukturze danych w Cloud Firestore, w tym o danych hierarchicznych i podkolekcjach.
- Dodaj dane – 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 wykonywać proste i złożone zapytania.
- Sortowanie i ograniczanie zapytań Dowiedz się, jak sortować i ograniczać dane zwracane przez zapytania.