Z tego przewodnika dowiesz się, jak skonfigurować usługę Cloud Firestore, dodać do niej dane, a następnie użyć operacji podstawowych lub operacji w potokach, aby wysłać zapytanie o dane dodane w konsoli Firebase za pomocą bibliotek klienta serwera w językach Java, Node.js i Python.
Użyj tych bibliotek klienta, aby skonfigurować uprzywilejowane środowiska serwera z pełnym dostępem do bazy danych.
Tworzenie bazy danych Cloud Firestore
Jeśli jeszcze tego nie zrobisz, utwórz projekt w Firebase: w konsoli Firebase kliknij Dodaj projekt, a następnie postępuj zgodnie z instrukcjami wyświetlanymi na ekranie, aby utworzyć projekt w Firebase lub dodać usługi Firebase do istniejącego projektu Google Cloud.
W panelu po lewej stronie kliknij Bazy danych i pamięć masowa > Firestore.
Kliknij Utwórz bazę danych.
W przypadku trybu bazy danych wybierz Enterprise.
W przypadku trybu działania wybierz Firestore w trybie natywnym, który obsługuje operacje podstawowe i operacje w potokach.
Wybierz lokalizację bazy danych.
Wybierz tryb początkowy dla Cloud Firestore Security Rules:
- Tryb testowy
Dobry sposób na rozpoczęcie pracy z bibliotekami klienta mobilnego i internetowego, ale umożliwia każdemu odczytywanie i nadpisywanie danych. Po zakończeniu testowania upewnij się, że zapoznasz się z sekcją Zabezpieczanie danych.
Aby rozpocząć korzystanie z pakietu SDK do klienta internetowego, platform Apple lub Androida, wybierz tryb testowy.
- Tryb produkcyjny
Odrzuca wszystkie odczyty i zapisy klientów mobilnych i internetowych. Uwierzytelnione serwery aplikacji (Node.js, Python, Java) nadal mogą uzyskiwać dostęp do bazy danych.
Początkowy zestaw Cloud Firestore Security Rules będzie stosowany do domyślnej Cloud Firestore bazy danych. Jeśli utworzysz w projekcie kilka baz danych, możesz wdrożyć Cloud Firestore Security Rules dla każdej z nich.
Kliknij Utwórz.
Gdy włączysz Cloud Firestore, włączy się też interfejs API w Menedżerze interfejsów Cloud API.
Konfigurowanie środowiska programistycznego
Dodaj do aplikacji wymagane zależności i biblioteki klienta.
Node.js
-
Dodaj do aplikacji pakiet Firebase Admin SDK:
npm install firebase-admin --save
- Aby zainicjować Cloud Firestore z odpowiednimi danymi logowania w swoim środowisku, postępuj zgodnie z instrukcjami poniżej.
Python
- Dodaj do aplikacji Python pakiet Firebase Admin SDK:
pip install --upgrade firebase-admin
- Aby zainicjować Cloud Firestore z odpowiednimi danymi logowania w swoim środowisku, postępuj zgodnie z instrukcjami poniżej.
Java
- Dodaj do aplikacji pakiet Firebase Admin SDK:
-
Używanie Gradle:
implementation 'com.google.firebase:firebase-admin:9.10.0'
-
Używanie Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>9.10.0</version> </dependency>
-
Używanie Gradle:
- Aby zainicjować Cloud Firestore z odpowiednimi danymi logowania w swoim środowisku, postępuj zgodnie z instrukcjami poniżej.
Inicjowanie Cloud Firestore
Zainicjuj instancję Cloud Firestore:
Node.js
Pakiet SDK Cloud Firestore jest inicjowany na różne sposoby w zależności od środowiska. Poniżej znajdziesz najczęstsze metody. Pełne informacje znajdziesz w artykule Inicjowanie pakietu Admin SDK.-
Inicjowanie w Cloud Functions
const { initializeApp, applicationDefault, cert } = require('firebase-admin/app'); const { getFirestore, Timestamp, FieldValue, Filter } = require('firebase-admin/firestore');
initializeApp(); const db = getFirestore();
-
Inicjowanie 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();
-
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 Uprawnienia i administracja > Konta usługi. Wygeneruj nowy klucz prywatny i zapisz plik JSON. Następnie użyj tego pliku, aby zainicjować pakiet 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();
Python
Pakiet SDK Cloud Firestore jest inicjowany na różne sposoby w zależności od środowiska. Poniżej znajdziesz najczęstsze metody. Pełne informacje znajdziesz w artykule Inicjowanie pakietu Admin SDK.import firebase_admin from firebase_admin import firestore # Application Default credentials are automatically created. app = firebase_admin.initialize_app() db = firestore.client()
Do zainicjowania pakietu SDK można też użyć istniejących domyślnych danych logowania aplikacji.
import firebase_admin from firebase_admin import credentials from firebase_admin import firestore # Use the application default credentials. cred = credentials.ApplicationDefault() firebase_admin.initialize_app(cred) db = firestore.client()
Aby używać pakietu Firebase Admin SDK na własnym serwerze, użyj konta usługi.
W konsoli Google Cloud otwórz Uprawnienia i administracja > Konta usługi. Wygeneruj nowy klucz prywatny i zapisz plik JSON. Następnie użyj tego pliku, aby zainicjować pakiet 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()
Java
Pakiet SDK Cloud Firestore jest inicjowany na różne sposoby w zależności od środowiska. Poniżej znajdziesz najczęstsze metody. Pełne informacje znajdziesz w artykule Inicjowanie pakietu Admin SDK.import com.google.auth.oauth2.GoogleCredentials; import com.google.cloud.firestore.Firestore; import com.google.firebase.FirebaseApp; import com.google.firebase.FirebaseOptions; // Use the application default credentials GoogleCredentials credentials = GoogleCredentials.getApplicationDefault(); FirebaseOptions options = new FirebaseOptions.Builder() .setCredentials(credentials) .setProjectId(projectId) .build(); FirebaseApp.initializeApp(options); Firestore db = FirestoreClient.getFirestore();
Aby używać pakietu Firebase Admin SDK na własnym serwerze, użyj konta usługi.
W konsoli Google Cloud otwórz Uprawnienia i administracja > Konta usługi. Wygeneruj nowy klucz prywatny i zapisz plik JSON. Następnie użyj tego pliku, aby zainicjować pakiet 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();
Dodawanie danych za pomocą operacji podstawowych
Aby poznać operacje podstawowe i operacje w potokach służące do wysyłania zapytań o dane, dodaj dane do bazy danych za pomocą operacji podstawowych.
Cloud Firestore przechowuje dane w dokumentach, które są przechowywane w kolekcjach. Cloud Firestore tworzy kolekcje i dokumenty niejawnie przy pierwszym dodaniu danych do dokumentu. Nie musisz tworzyć kolekcji ani dokumentów.
Utwórz nową kolekcję i dokument, korzystając z tego przykładowego kodu.
Node.js
Java
Python
Odczytywanie danych za pomocą operacji podstawowych
Aby szybko sprawdzić, czy dane zostały dodane do Cloud Firestore, użyj przeglądarki danych w konsoli Firebase.
Możesz też użyć metody „get”, aby pobrać całą kolekcję.
Node.js
Python
users_ref = db.collection("users") docs = users_ref.stream() for doc in docs: print(f"{doc.id} => {doc.to_dict()}")
Java
Odczytywanie danych za pomocą operacji w potokach
Teraz możesz porównać wysyłanie zapytań w potokach z wysyłaniem zapytań podstawowych.
Node.js
const readDataPipeline = db.pipeline() .collection("users"); // Execute the pipeline and handle the result try { const querySnapshot = await readDataPipeline.execute(); querySnapshot.results.forEach((result) => { console.log(`${result.id} => ${result.data()}`); }); } catch (error) { console.error("Error getting documents: ", error); }
Python
pipeline = client.pipeline().collection("users") for result in pipeline.execute(): print(f"{result.id} => {result.data()}")
Java
Pipeline pipeline = firestore.pipeline().collection("users"); ApiFuture<Pipeline.Snapshot> future = pipeline.execute(); for (com.google.cloud.firestore.PipelineResult result : future.get().getResults()) { System.out.println(result.getId() + " => " + result.getData()); } // or, asynchronously pipeline.execute( new ApiStreamObserver<com.google.cloud.firestore.PipelineResult>() { @Override public void onNext(com.google.cloud.firestore.PipelineResult result) { System.out.println(result.getId() + " => " + result.getData()); } @Override public void onError(Throwable t) { System.err.println(t); } @Override public void onCompleted() { System.out.println("done"); } });
Dalsze kroki
Pogłębiaj swoją wiedzę na temat operacji podstawowych i operacji w potokach, korzystając z tych tematów:
- Zapoznaj się z różnicami między operacjami podstawowymi a operacjami w potokach.
- Dowiedz się więcej o wysyłaniu zapytań za pomocą operacji podstawowych.
- Dowiedz się więcej o wysyłaniu zapytań za pomocą operacji w potokach.