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.
Za pomocą tych bibliotek klienta możesz 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 Google Cloud projektu.
W panelu po lewej stronie kliknij Bazy danych i pamięć masowa > Firestore.
Kliknij Utwórz bazę danych.
Wybierz Enterprise jako tryb bazy danych.
Wybierz Firestore w trybie natywnym jako tryb działania, 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 produkcji
Blokuje wszystkie odczyty i zapisy z 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 kilka baz danych dla swojego projektu, 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.9.0'
-
Używanie Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>9.9.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 kliknij 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 kliknij 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 kliknij 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 poniższego 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ć zapytania w potokach z zapytaniami podstawowymi.
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.