Pierwsze kroki z Cloud Firestore

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

  1. 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.

  2. Otwórz projekt w konsoli Firebase. W panelu po lewej stronie rozwiń Tworzenie i wybierz Baza danych Firestore.

  3. Kliknij Utwórz bazę danych.

  4. 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.

  5. 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.

  6. 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

  1. Wykonaj instrukcje, aby dodać Firebase do aplikacji internetowej.
  2. 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

  1. Wykonaj instrukcje, aby dodać Firebase do aplikacji internetowej.
  2. 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.

  1. Po otwarciu projektu aplikacji w Xcode wybierz Plik > Pakiety Swift > Dodaj zależność pakietu.
  2. Gdy pojawi się prośba, dodaj repozytorium pakietu SDK Firebase na platformy Apple:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. Wybierz bibliotekę Firestore.
  5. Gdy to zrobisz, Xcode automatycznie zacznie wyszukiwać i pobierać zależności w tle.
Android
  1. Postępuj zgodnie z instrukcjami, aby dodać Firebase do aplikacji na Androida.
  2. 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 lub app/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

  1. Jeśli nie zostało to jeszcze zrobione, skonfiguruj i inicjuj Firebase w aplikacji Flutter.
  2. Aby zainstalować w katalogu głównym projektu Flutter wtyczkę, uruchom to polecenie:
    flutter pub add cloud_firestore
  3. Po zakończeniu ponownie skompiluj aplikację Flutter:
    flutter run
  4. 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 aplikacji firebase_core. Jeśli nie używasz najnowszej wersji firebase_core, poszukaj tego pliku w miejscowym pamięci podręcznej pakietu Pub (zwykle ~/.pub-cache).

    Dodatkowo sprawdź, czy CocoaPods zostały zaktualizowane do wersji 1.9.1 lub nowszej:

    gem install cocoapods

    Więcej informacji znajdziesz w problemie na GitHubie.

Java
  1. 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>
           
  2. Aby zainicjować usługę Cloud Firestore w swoim środowisku przy użyciu odpowiednich danych logowania, wykonaj podane niżej instrukcje.
Python
  1. Dodaj do aplikacji Pythona pakiet SDK Firebase Admin:
    pip install --upgrade firebase-admin
  2. Aby zainicjować usługę Cloud Firestore w swoim środowisku przy użyciu odpowiednich danych logowania, wykonaj podane niżej instrukcje.
C++
  1. Postępuj zgodnie z instrukcjami, aby dodać Firebase do projektu C++.
  2. Interfejs C++ na Androida.
    • Zależność Gradle. Dodaj ten ciąg 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 tych 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}")
              
  3. Aby skonfigurować integrację z komputera, przeczytaj artykuł Dodawanie Firebase do projektu C++.
Unity
  1. Postępuj zgodnie z instrukcjami, aby dodać Firebase do projektu Unity.
  2. Użyj interfejsu Unity, aby skonfigurować projekt w celu kompresji wersji na Androida.
  3. Aby uniknąć komunikatu Error while merging dex archives, musisz zoptymalizować kompilację.

    • 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ą Unityprzewodnikiem 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.
Node.js
  1. Dodaj do aplikacji pakiet Admin SDK Firebase:
    npm install firebase-admin --save
  2. Aby zainicjować usługę Cloud Firestore w swoim środowisku przy użyciu odpowiednich danych logowania, wykonaj podane niżej instrukcje.
Go
  1. Dodaj do aplikacji Go pakiet SDK Firebase Admin:
    go get firebase.google.com/go
  2. Aby zainicjować usługę Cloud Firestore w swoim środowisku przy użyciu odpowiednich danych logowania, wykonaj podane niżej instrukcje.
PHP
  1. 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.
  2. Zainstaluj i włącz rozszerzenie gRPC do PHP, którego będziesz potrzebować do korzystania z biblioteki klienta.
  3. Dodaj do aplikacji bibliotekę PHP Cloud Firestore:
    composer require google/cloud-firestore
C#
  1. 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.
  2. Dodaj bibliotekę Cloud Firestore w języku C# do aplikacji w pliku .csproj:
    <ItemGroup>
      <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" />
    </ItemGroup>
  3. Dodaj do pliku Program.cs te wiersze:
    using Google.Cloud.Firestore;
Ruby
  1. 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.
  2. Dodaj do aplikacji bibliotekę Ruby Cloud Firestore w pliku Gemfile:
    gem "google-cloud-firestore"
  3. Zainstaluj zależności z urządzenia 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:

  1. Dodanie linii kodu do konfiguracji testowej aplikacji, aby połączyć się z emulatorem.
  2. W katalogu głównym lokalnego katalogu projektu uruchom firebase emulators:start.
  3. 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 FirestoreCloud 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
Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem watchOS i w przypadku aplikacji typu App Clip.
import FirebaseCore
import FirebaseFirestore
FirebaseApp.configure()

let db = Firestore.firestore()
Objective-C
Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem watchOS i w przypadku aplikacji typu App Clip.
@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
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 Google Cloud
    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();
  • Inicjowanie na własnym serwerze

    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.
  • Inicjowanie na Google Cloud
    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()
  • Inicjowanie na własnym serwerze

    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.
  • Inicjowanie na Google Cloud
    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()
  • Inicjowanie na własnym serwerze

    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.
  • Inicjowanie na Google Cloud
    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()
  • Inicjowanie na własnym serwerze

    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.

    use Google\Cloud\Firestore\FirestoreClient;
    
    /**
     * Initialize Cloud Firestore with default project ID.
     */
    function setup_client_create(string $projectId = null)
    {
        // Create the Cloud Firestore client
        if (empty($projectId)) {
            // The `projectId` parameter is optional and represents which project the
            // client will act on behalf of. If not supplied, the client falls back to
            // the default project inferred from the environment.
            $db = new FirestoreClient();
            printf('Created Cloud Firestore client with default project ID.' . PHP_EOL);
        } else {
            $db = new FirestoreClient([
                'projectId' => $projectId,
            ]);
            printf('Created Cloud Firestore client with project ID: %s' . PHP_EOL, $projectId);
        }
    }
    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.

    FirestoreDb db = FirestoreDb.Create(project);
    Console.WriteLine("Created Cloud Firestore client with project ID: {0}", project);
    Ruby
    require "google/cloud/firestore"
    
    # The `project_id` parameter is optional and represents which project the
    # client will act on behalf of. If not supplied, the client falls back to the
    # default project inferred from the environment.
    firestore = Google::Cloud::Firestore.new project_id: project_id
    
    puts "Created Cloud Firestore client with given project ID."

    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
    Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem watchOS i w przypadku aplikacji typu App Clip.
    // 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
    Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem watchOS i w przypadku aplikacji typu App Clip.
    // 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
    DocumentReference docRef = db.collection("users").document("alovelace");
    // Add document data  with id "alovelace" using a hashmap
    Map<String, Object> data = new HashMap<>();
    data.put("first", "Ada");
    data.put("last", "Lovelace");
    data.put("born", 1815);
    //asynchronously write data
    ApiFuture<WriteResult> result = docRef.set(data);
    // ...
    // result.get() blocks on response
    System.out.println("Update time : " + result.get().getUpdateTime());
    Python
    doc_ref = db.collection("users").document("alovelace")
    doc_ref.set({"first": "Ada", "last": "Lovelace", "born": 1815})

    Python

    doc_ref = db.collection("users").document("alovelace")
    await doc_ref.set({"first": "Ada", "last": "Lovelace", "born": 1815})
    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
    const docRef = db.collection('users').doc('alovelace');
    
    await docRef.set({
      first: 'Ada',
      last: 'Lovelace',
      born: 1815
    });
    Go
    _, _, err := client.Collection("users").Add(ctx, map[string]interface{}{
    	"first": "Ada",
    	"last":  "Lovelace",
    	"born":  1815,
    })
    if err != nil {
    	log.Fatalf("Failed adding alovelace: %v", err)
    }
    PHP

    PHP

    Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz w artykule Cloud Firestore Biblioteki klienta.

    $docRef = $db->collection('samples/php/users')->document('alovelace');
    $docRef->set([
        'first' => 'Ada',
        'last' => 'Lovelace',
        'born' => 1815
    ]);
    printf('Added data to the lovelace document in the users collection.' . PHP_EOL);
    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#
    DocumentReference docRef = db.Collection("users").Document("alovelace");
    Dictionary<string, object> user = new Dictionary<string, object>
    {
        { "First", "Ada" },
        { "Last", "Lovelace" },
        { "Born", 1815 }
    };
    await docRef.SetAsync(user);
    Ruby
    doc_ref = firestore.doc "#{collection_path}/alovelace"
    
    doc_ref.set(
      {
        first: "Ada",
        last:  "Lovelace",
        born:  1815
      }
    )
    
    puts "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
    Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem watchOS i w przypadku aplikacji typu App Clip.
    // 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
    Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem watchOS i w przypadku aplikacji typu App Clip.
    // 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
    DocumentReference docRef = db.collection("users").document("aturing");
    // Add document data with an additional field ("middle")
    Map<String, Object> data = new HashMap<>();
    data.put("first", "Alan");
    data.put("middle", "Mathison");
    data.put("last", "Turing");
    data.put("born", 1912);
    
    ApiFuture<WriteResult> result = docRef.set(data);
    System.out.println("Update time : " + result.get().getUpdateTime());
    Python
    doc_ref = db.collection("users").document("aturing")
    doc_ref.set({"first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912})

    Python

    doc_ref = db.collection("users").document("aturing")
    await doc_ref.set(
        {"first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912}
    )
    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
    const aTuringRef = db.collection('users').doc('aturing');
    
    await aTuringRef.set({
      'first': 'Alan',
      'middle': 'Mathison',
      'last': 'Turing',
      'born': 1912
    });
    Go
    _, _, err = client.Collection("users").Add(ctx, map[string]interface{}{
    	"first":  "Alan",
    	"middle": "Mathison",
    	"last":   "Turing",
    	"born":   1912,
    })
    if err != nil {
    	log.Fatalf("Failed adding aturing: %v", err)
    }
    PHP

    PHP

    Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz w artykule Cloud Firestore Biblioteki klienta.

    $docRef = $db->collection('samples/php/users')->document('aturing');
    $docRef->set([
        'first' => 'Alan',
        'middle' => 'Mathison',
        'last' => 'Turing',
        'born' => 1912
    ]);
    printf('Added data to the aturing document in the users collection.' . PHP_EOL);
    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#
    DocumentReference docRef = db.Collection("users").Document("aturing");
    Dictionary<string, object> user = new Dictionary<string, object>
    {
        { "First", "Alan" },
        { "Middle", "Mathison" },
        { "Last", "Turing" },
        { "Born", 1912 }
    };
    await docRef.SetAsync(user);
    Ruby
    doc_ref = firestore.doc "#{collection_path}/aturing"
    
    doc_ref.set(
      {
        first:  "Alan",
        middle: "Mathison",
        last:   "Turing",
        born:   1912
      }
    )
    
    puts "Added data to the aturing document in the users collection."

    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
    Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem watchOS i w przypadku aplikacji typu App Clip.
    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
    Uwaga: ta usługa nie jest dostępna na urządzeniach z systemem watchOS i w przypadku aplikacji typu App Clip.
    [[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
    // asynchronously retrieve all users
    ApiFuture<QuerySnapshot> query = db.collection("users").get();
    // ...
    // query.get() blocks on response
    QuerySnapshot querySnapshot = query.get();
    List<QueryDocumentSnapshot> documents = querySnapshot.getDocuments();
    for (QueryDocumentSnapshot document : documents) {
      System.out.println("User: " + document.getId());
      System.out.println("First: " + document.getString("first"));
      if (document.contains("middle")) {
        System.out.println("Middle: " + document.getString("middle"));
      }
      System.out.println("Last: " + document.getString("last"));
      System.out.println("Born: " + document.getLong("born"));
    }
    Python
    users_ref = db.collection("users")
    docs = users_ref.stream()
    
    for doc in docs:
        print(f"{doc.id} => {doc.to_dict()}")

    Python

    users_ref = db.collection("users")
    docs = users_ref.stream()
    
    async for doc in docs:
        print(f"{doc.id} => {doc.to_dict()}")
    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
    const snapshot = await db.collection('users').get();
    snapshot.forEach((doc) => {
      console.log(doc.id, '=>', doc.data());
    });
    Go
    iter := client.Collection("users").Documents(ctx)
    for {
    	doc, err := iter.Next()
    	if err == iterator.Done {
    		break
    	}
    	if err != nil {
    		log.Fatalf("Failed to iterate: %v", err)
    	}
    	fmt.Println(doc.Data())
    }
    PHP

    PHP

    Więcej informacji o instalowaniu i tworzeniu klienta Cloud Firestore znajdziesz w artykule Cloud Firestore Biblioteki klienta.

    $usersRef = $db->collection('samples/php/users');
    $snapshot = $usersRef->documents();
    foreach ($snapshot as $user) {
        printf('User: %s' . PHP_EOL, $user->id());
        printf('First: %s' . PHP_EOL, $user['first']);
        if (!empty($user['middle'])) {
            printf('Middle: %s' . PHP_EOL, $user['middle']);
        }
        printf('Last: %s' . PHP_EOL, $user['last']);
        printf('Born: %d' . PHP_EOL, $user['born']);
        printf(PHP_EOL);
    }
    printf('Retrieved and printed out all documents from the users collection.' . PHP_EOL);
    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#
    CollectionReference usersRef = db.Collection("users");
    QuerySnapshot snapshot = await usersRef.GetSnapshotAsync();
    foreach (DocumentSnapshot document in snapshot.Documents)
    {
        Console.WriteLine("User: {0}", document.Id);
        Dictionary<string, object> documentDictionary = document.ToDictionary();
        Console.WriteLine("First: {0}", documentDictionary["First"]);
        if (documentDictionary.ContainsKey("Middle"))
        {
            Console.WriteLine("Middle: {0}", documentDictionary["Middle"]);
        }
        Console.WriteLine("Last: {0}", documentDictionary["Last"]);
        Console.WriteLine("Born: {0}", documentDictionary["Born"]);
        Console.WriteLine();
    }
    Ruby
    users_ref = firestore.col collection_path
    users_ref.get do |user|
      puts "#{user.document_id} data: #{user.data}."
    end

    Bezpieczeństwo danych

    Jeśli używasz pakietu SDK na platformy internetową, Androida lub Apple, zabezpiecz swoje dane za pomocą usługi Firebase AuthenticationCloud 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: