Pierwsze kroki z Cloud Firestore

Z tego krótkiego wprowadzenia dowiesz się, jak skonfigurować Cloud Firestore, dodać dane, a następnie wyświetlić dodane przed chwilą dane w konsoli Firebase.

Tworzenie bazy danych Cloud Firestore

  1. Utwórz projekt Firebase, jeśli jeszcze go nie masz. 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 GCP.

  2. W konsoli Firebase przejdź do sekcji Cloud Firestore. Pojawi się prośba o wybranie istniejącego projektu Firebase. Postępuj zgodnie z procedurą tworzenia bazy danych.

  3. Wybierz tryb początkowy reguł zabezpieczeń Cloud Firestore:

    Tryb testowy

    Sprawdza się w przypadku rozpoczęcia korzystania z bibliotek klienta mobilnego i internetowego, ale pozwala każdemu na odczyt i zastępowanie Twoich danych. Po zakończeniu testów zapoznaj się z sekcją Zabezpieczanie danych.

    Aby zacząć korzystać z internetu, platform Apple lub pakietu SDK na Androida, wybierz tryb testowy.

    Tryb blokady

    Blokuje wszystkie odczyty i zapisy z klientów mobilnych i internetowych. Twoje uwierzytelnione serwery aplikacji (C#, Go, Java, Node.js, PHP, Python lub Ruby) mają nadal dostęp do Twojej bazy danych.

    Aby zacząć korzystać z biblioteki klienta serwera w językach C#, Go, Java, Node.js, PHP, Python lub Ruby, wybierz tryb blokady.

    Początkowy zestaw reguł zabezpieczeń Cloud Firestore będzie stosowany do domyślnej bazy danych Cloud Firestore. Jeśli w projekcie tworzysz wiele baz danych, możesz wdrożyć reguły zabezpieczeń Cloud Firestore w przypadku każdej z nich.

  4. Wybierz lokalizację bazy danych.

    • To ustawienie lokalizacji określa domyślną lokalizację zasobów Google Cloud Platform (GCP) dla Twojego projektu. Pamiętaj, że ta lokalizacja będzie używana w przypadku usług GCP w projekcie, które wymagają ustawienia lokalizacji, a zwłaszcza domyślnego zasobnika Cloud Storage i aplikacji App Engine (co jest wymagane, jeśli używasz usługi Cloud Scheduler).

    • Jeśli nie możesz wybrać lokalizacji, oznacza to, że Twój projekt ma już domyślną lokalizację zasobów GCP. Wartość została ustawiona podczas tworzenia projektu lub podczas konfigurowania innej usługi, która wymaga ustawienia lokalizacji.

  5. Kliknij Gotowe.

Gdy włączysz Cloud Firestore, interfejs API zostanie także włączony w menedżerze Cloud API.

Konfigurowanie środowiska programistycznego

Dodaj do aplikacji wymagane zależności i biblioteki klienta.

Web

  1. Wykonaj instrukcje dodawania Firebase do swojej aplikacji internetowej.
  2. Dodaj do aplikacji biblioteki Firebase i Cloud Firestore:
    <script src="https://www.gstatic.com/firebasejs/10.12.3/firebase-app-compat.js"></script>
    <script src="https://www.gstatic.com/firebasejs/10.12.3/firebase-firestore-compat.js"></script>
    Pakiet SDK Cloud Firestore jest też dostępny jako pakiet npm.
    npm install firebase@10.12.3 --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 dodawania Firebase do swojej aplikacji internetowej.
  2. Pakiet SDK Cloud Firestore jest dostępny jako pakiet npm.
    npm install firebase@10.12.3 --save
    
    Musisz zaimportować zarówno Firebase, jak i Cloud Firestore.
    import { initializeApp } from "firebase/app";
    import { getFirestore } from "firebase/firestore";
    
iOS+

Wykonaj instrukcje dodawania Firebase do aplikacji Apple.

Użyj menedżera pakietów Swift, aby zainstalować zależności Firebase i nimi zarządzać.

  1. Po otwarciu projektu aplikacji przejdź w Xcode do File > Swift Packages > Add Package Dependency (Plik > Pakiety Swift > Dodaj zależność pakietu).
  2. Gdy pojawi się prośba, dodaj repozytorium SDK platform Apple Platform SDK Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. Wybierz bibliotekę Firestore.
  5. Po zakończeniu Xcode automatycznie rozpocznie rozpoznawanie i pobieranie zależności w tle.
Android
  1. Postępuj zgodnie z instrukcjami, aby dodać Firebase do swojej aplikacji na Androida.
  2. Za pomocą BoM Firebase Android BoM zadeklaruj zależność z biblioteką Cloud Firestore na Androida w pliku Gradle na poziomie modułu (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.1.2"))
    
        // 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 użyjesz BM Firebase Android BoM, Twoja aplikacja będzie zawsze używała zgodnych wersji bibliotek Firebase na Androida.

    (Alternatywnie) Zadeklaruj zależności bibliotek Firebase bez korzystania z BM

    Jeśli nie chcesz używać Firebase BoM, musisz określić każdą wersję biblioteki Firebase w wierszu zależności.

    Pamiętaj, że jeśli w swojej aplikacji używasz wielu bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami bibliotek. Zapewni to 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.0.0")
    }
    

    Szukasz modułu biblioteki korzystającego z usługi Kotlin? Od wersji z października 2023 r. zarówno deweloperzy aplikacji Kotlin, jak i języki Java mogą korzystać z modułu głównej biblioteki (szczegółowe informacje znajdziesz w odpowiedziach na najczęstsze pytania na temat tej inicjatywy).

Dart

  1. Skonfiguruj i zainicjuj Firebase w aplikacji Flutter, jeśli jeszcze jej nie masz.
  2. Aby zainstalować wtyczkę, w katalogu głównym projektu Flutter uruchom to polecenie:
    flutter pub add cloud_firestore
  3. Gdy się zakończy, ponownie skompiluj aplikację Flutter:
    flutter run
  4. Opcjonalnie: popraw czas kompilacji na systemy iOS i macOS, dodając wstępnie skompilowaną platformę.

    Obecnie pakiet SDK Firestore na iOS zależy od kodu, którego kompilację w Xcode może zająć nawet 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 usługi firebase_core. Jeśli nie używasz najnowszej wersji firebase_core, poszukaj tego pliku w pamięci podręcznej lokalnego pakietu Pub (zwykle ~/.pub-cache).

    Sprawdź też, czy CocoaPods masz uaktualnione do wersji 1.9.1 lub nowszej:

    gem install cocoapods

    Więcej informacji znajdziesz w opisie problemu na GitHubie.

Java
  1. Dodaj do aplikacji pakiet SDK Firebase Admin:
    • Używanie Gradle:
      compile 'com.google.firebase:firebase-admin:1.32.0'
      
    • Korzystanie z narzędzia Maven:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>1.32.0</version>
      </dependency>
           
  2. Wykonaj poniższe instrukcje, aby zainicjować Cloud Firestore przy użyciu odpowiednich danych logowania w Twoim środowisku.
Python
  1. Dodaj pakiet SDK Firebase Admin do aplikacji w Pythonie:
    pip install --upgrade firebase-admin
  2. Wykonaj poniższe instrukcje, aby zainicjować Cloud Firestore przy użyciu odpowiednich danych logowania w Twoim środowisku.
C++
  1. Postępuj zgodnie z instrukcjami, aby dodać Firebase do projektu C++.
  2. Interfejs C++ na Androida.
    • Zależności Gradle. Dodaj do pliku Gradle modułu (na poziomie aplikacji) te elementy (zwykle app/build.gradle):
              android.defaultConfig.externalNativeBuild.cmake {
                arguments "-DFIREBASE_CPP_SDK_DIR=$gradle.firebase_cpp_sdk_dir"
              }
      
              apply from: "$gradle.firebase_cpp_sdk_dir/Android/firebase_dependencies.gradle"
              firebaseCpp.dependencies {
                // earlier entries
                auth
                firestore
              }
              
    • Zależności plików binarnych. Zalecany sposób uzyskiwania zależności binarnych to również 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}")
              
  3. Instrukcje konfigurowania integracji z komputerami znajdziesz w artykule Dodawanie Firebase do projektu C++.
Unity
  1. Postępuj zgodnie z instrukcjami, aby dodać Firebase do projektu w Unity.
  2. Użyj interfejsu Unity, aby skonfigurować w projekcie zmniejszanie kompilacji Androida.
  3. Aby uniknąć komunikatu Error while merging dex archives, musisz zmniejszyć kompilację.

    • Tę opcję znajdziesz, klikając Ustawienia odtwarzacza > Android > Ustawienia publikowania > Zmniejsz.
    • Te opcje mogą się różnić w zależności od wersji Unity, więc zapoznaj się z oficjalną dokumentacją Unity i przewodnikiem tworzenia debugowania Firebase Unity.
    • Jeśli po włączeniu minifikacji liczba przywołanych metod nadal przekracza limit, możesz włączyć multidex w:
      • mainTemplate.gradle, jeśli w sekcji Ustawienia gracza włączono Niestandardowy szablon Gradle
      • lub plik build.gradle na poziomie modułu, jeśli do utworzenia wyeksportowanego projektu używasz Android Studio.
Node.js
  1. Dodaj do swojej aplikacji pakiet SDK Firebase Admin:
    npm install firebase-admin --save
  2. Wykonaj poniższe instrukcje, aby zainicjować Cloud Firestore przy użyciu odpowiednich danych logowania w Twoim środowisku.
Go
  1. Dodaj pakiet SDK Firebase Admin do aplikacji w języku Go:
    go get firebase.google.com/go
    
  2. Wykonaj poniższe instrukcje, aby zainicjować Cloud Firestore przy użyciu odpowiednich danych logowania w Twoim środowisku.
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ę ze środowiska programistycznego, ustaw zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS tak, aby wskazywała plik klucza konta usługi JSON. Plik klucza możesz utworzyć na stronie Dane logowania konsoli interfejsów API.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • W środowisku produkcyjnym nie musisz się uwierzytelniać, jeśli Twoja aplikacja jest uruchamiana w App Engine lub Compute Engine przy użyciu tego samego projektu, którego używasz w Cloud Firestore. W przeciwnym razie skonfiguruj konto usługi.
  2. Zainstaluj i włącz rozszerzenie gRPC dla języka PHP. Musisz użyć 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ę ze środowiska programistycznego, ustaw zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS tak, aby wskazywała plik klucza konta usługi JSON. Plik klucza możesz utworzyć na stronie Dane logowania konsoli interfejsów API.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • W środowisku produkcyjnym nie musisz się uwierzytelniać, jeśli Twoja aplikacja jest uruchamiana w App Engine lub Compute Engine przy użyciu tego samego projektu, którego używasz w Cloud Firestore. W przeciwnym razie skonfiguruj konto usługi.
  2. Dodaj bibliotekę Cloud Firestore C# do swojej aplikacji w pliku .csproj:
    <ItemGroup>
      <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" />
    </ItemGroup>
  3. Dodaj do pliku Program.cs te informacje:
    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ę ze środowiska programistycznego, ustaw zmienną środowiskową GOOGLE_APPLICATION_CREDENTIALS tak, aby wskazywała plik klucza konta usługi JSON. Plik klucza możesz utworzyć na stronie Dane logowania konsoli interfejsów API.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • W środowisku produkcyjnym nie musisz się uwierzytelniać, jeśli Twoja aplikacja jest uruchamiana w App Engine lub Compute Engine przy użyciu tego samego projektu, którego używasz w Cloud Firestore. W przeciwnym razie skonfiguruj konto usługi.
  2. Dodaj bibliotekę Cloud Firestore Ruby do swojej aplikacji w: Gemfile:
    gem "google-cloud-firestore"
  3. Zainstaluj zależności z Gemfile przy użyciu:
    bundle install

(Opcjonalnie) Prototypowanie i testowanie w Pakiecie emulatorów lokalnych Firebase

Zanim zajmiemy się odczytem i zapisem aplikacji w Cloud Firestore, przedstawmy zestaw narzędzi służących do tworzenia prototypów i testowania funkcji Cloud Firestore: Pakiet emulatorów lokalnych Firebase. Świetnym pomysłem może być możliwość pracy lokalnie bez wdrażania aktywnych usług, jeśli wypróbowujesz różne modele danych, optymalizujesz reguły zabezpieczeń lub szukasz najbardziej ekonomicznego sposobu interakcji z backendem.

Emulator Cloud Firestore jest częścią Pakietu emulatorów lokalnych, który umożliwia aplikacji interakcję z treścią i konfiguracją emulowanej bazy danych, a także opcjonalnie emulowanymi zasobami projektu (funkcjami, innymi bazami danych i regułami zabezpieczeń).

Aby użyć emulatora Cloud Firestore, wystarczy wykonać kilka czynności:

  1. Dodajesz wiersz kodu do konfiguracji testowej aplikacji, aby połączyć się z emulatorem.
  2. Uruchomienie firebase emulators:start w katalogu głównym projektu lokalnego.
  3. Jak zwykle wykonywać wywołania z prototypowego kodu aplikacji za pomocą pakietu SDK platformy Cloud Firestore.

Dostępny jest szczegółowy przewodnik dotyczący Cloud Firestore i Cloud Functions. Zapoznaj się też z wprowadzeniem do Pakietu emulatorów lokalnych.

Zainicjuj Cloud Firestore

Zainicjuj instancję Cloud Firestore:

Web

import { initializeApp } from "firebase/app";
import { getFirestore } from "firebase/firestore";

// TODO: Replace the following with your app's Firebase project configuration
// See: https://support.google.com/firebase/answer/7015592
const firebaseConfig = {
    FIREBASE_CONFIGURATION
};

// Initialize Firebase
const app = initializeApp(firebaseConfig);


// Initialize Cloud Firestore and get a reference to the service
const db = getFirestore(app);

Zastąp FIREBASE_CONFIGURATION adresem firebaseConfig 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 adresem firebaseConfig Twojej aplikacji internetowej.

Aby zachować dane, gdy urządzenie utraci połączenie, zapoznaj się z dokumentacją Włączanie danych offline.

Szybkie
Uwaga: ten produkt nie jest dostępny na urządzeniach docelowych watchOS i wycinków aplikacji.
import FirebaseCore
import FirebaseFirestore
FirebaseApp.configure()

let db = Firestore.firestore()
Objective-C
Uwaga: ten produkt nie jest dostępny na urządzeniach docelowych watchOS i wycinków aplikacji.
@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 SDK jest inicjowany na różne sposoby w zależności od środowiska. Poniżej przedstawiamy najpopularniejsze metody. Pełne informacje znajdziesz w artykule o inicjowaniu pakietu Admin SDK.
  • Zainicjuj w 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();
    
  • Zainicjuj na własnym serwerze

    Aby używać pakietu Firebase Admin SDK na własnym serwerze, użyj konta usługi.

    W konsoli Google Cloud kliknij 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 SDK jest inicjowany na różne sposoby w zależności od środowiska. Poniżej przedstawiamy najpopularniejsze metody. Pełne informacje znajdziesz w artykule o inicjowaniu pakietu Admin SDK.
  • Zainicjuj w 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 uwierzytelniających 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()
  • Zainicjuj na własnym serwerze

    Aby używać pakietu Firebase Admin SDK na własnym serwerze, użyj konta usługi.

    W konsoli Google Cloud kliknij 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 SDK jest inicjowany na różne sposoby w zależności od środowiska. Poniżej przedstawiamy najpopularniejsze metody. Pełne informacje znajdziesz w artykule o inicjowaniu pakietu Admin SDK.
  • Zainicjuj w 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 uwierzytelniających 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()
  • Zainicjuj na własnym serwerze

    Aby używać pakietu Firebase Admin SDK na własnym serwerze, użyj konta usługi.

    W konsoli Google Cloud kliknij 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 SDK jest inicjowany na różne sposoby w zależności od środowiska. Poniżej przedstawiamy najpopularniejsze metody. Pełne informacje znajdziesz w artykule o inicjowaniu pakietu Admin SDK.
    • Zainicjowanie w Cloud Functions
      const { initializeApp, applicationDefault, cert } = require('firebase-admin/app');
      const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
      initializeApp();
      
      const db = getFirestore();
      
    • Zainicjuj w 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();
    • Zainicjuj na własnym serwerze

      Aby korzystać z pakietu Firebase Admin SDK na własnym serwerze (lub w innym środowisku Node.js), użyj konta usługi. W konsoli Google Cloud kliknij 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 SDK jest inicjowany na różne sposoby w zależności od środowiska. Poniżej przedstawiamy najpopularniejsze metody. Pełne informacje znajdziesz w artykule o inicjowaniu pakietu Admin SDK.
  • Zainicjuj w 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()
    
  • Zainicjuj na własnym serwerze

    Aby używać pakietu Firebase Admin SDK na własnym serwerze, użyj konta usługi.

    W konsoli Google Cloud kliknij 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 bibliotekach klienta Cloud Firestore.

    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 bibliotekach klienta Cloud Firestore.

    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 domyślnie tworzy kolekcje i dokumenty przy pierwszym dodaniu danych do dokumentu. Nie musisz bezpośrednio tworzyć kolekcji ani dokumentów.

    Utwórz nową kolekcję i dokument, korzystając z poniższego 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: ten produkt nie jest dostępny na urządzeniach docelowych watchOS i wycinków aplikacji.
    // 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: ten produkt nie jest dostępny na urządzeniach docelowych watchOS i wycinków aplikacji.
    // 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
    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 bibliotekach klienta Cloud Firestore.

    $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ść (drugą nazwę), 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: ten produkt nie jest dostępny na urządzeniach docelowych watchOS i wycinków aplikacji.
    // 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: ten produkt nie jest dostępny na urządzeniach docelowych watchOS i wycinków aplikacji.
    // 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
    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 bibliotekach klienta Cloud Firestore.

    $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."

    Odczyt danych

    Korzystając z przeglądarki danych w konsoli Firebase, możesz szybko sprawdzić, czy dane zostały dodane do Cloud Firestore.

    Aby pobrać całą kolekcję, możesz też użyć metody „get”.

    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: ten produkt nie jest dostępny na urządzeniach docelowych watchOS i wycinków aplikacji.
    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: ten produkt nie jest dostępny na urządzeniach docelowych watchOS i wycinków aplikacji.
    [[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
    // 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 bibliotekach klienta Cloud Firestore.

    $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

    Zabezpieczanie danych

    Jeśli korzystasz z pakietu SDK na platformę internetową, Androida lub Apple, do zabezpieczenia danych w Cloud Firestore użyj uwierzytelniania Firebase i reguł zabezpieczeń Cloud Firestore.

    Oto kilka podstawowych zestawów reguł, od których możesz zacząć. Reguły zabezpieczeń możesz modyfikować na karcie Reguły w konsoli.

    Wymagane uwierzytelnienie

    // 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ą albo aplikację na Androida lub iOS w środowisku produkcyjnym, sprawdź, czy tylko klienty aplikacji mają dostęp do danych Cloud Firestore. Zapoznaj się z dokumentacją Sprawdzania aplikacji.

    Jeśli używasz jednego z pakietów SDK serwera, użyj funkcji Identity and Access Management (IAM), aby zabezpieczyć dane w Cloud Firestore.

    Obejrzyj samouczek wideo

    Szczegółowe wskazówki, jak zacząć korzystać z bibliotek klienta mobilnego Cloud Firestore, znajdziesz w tych samouczkach wideo:

    Internet
    iOS+
    Android

    Więcej filmów znajdziesz na kanale Firebase.

    Dalsze kroki

    Pogłębiaj swoją wiedzę na następujące tematy: