Z tego krótkiego wprowadzenia dowiesz się, jak skonfigurować Firestore Enterprise, dodać dane, a następnie użyć operacji podstawowych lub operacji potoku, aby wysłać zapytanie o dane, które zostały dodane w konsoli Firebase.
Cloud Firestore obsługuje pakiety SDK na urządzenia mobilne i do przeglądarek oraz biblioteki klienta serwera:
Cloud Firestore obsługuje pakiety SDK na Androida, iOS, do aplikacji internetowych i nie tylko. W połączeniu z Cloud Firestore Security Rules i Firebase Authentication pakiety SDK do aplikacji mobilnych i internetowych obsługują bezserwerowe architektury aplikacji, w których klienci łączą się bezpośrednio z bazą danych Cloud Firestore.
Cloud Firestore obsługuje biblioteki klienta serwera w językach Java, Node.js i Python. Użyj tych bibliotek klienta, aby skonfigurować uprzywilejowane środowiska serwerowe z pełnym dostępem do bazy danych. Więcej informacji o tych bibliotekach znajdziesz w krótkim wprowadzeniu do bibliotek klienta serwera.
prompt AI dla pomocy AI
Aby uzyskać pomoc AI, skopiuj poniższy prompt do agenta kodowania AI (takiego jak Gemini w Android Studio, Antigravity, Claude Code, Codex czy Cursor). Możesz dostosować prompta i wprowadzać zmiany z agentem. Szczegółowe informacje o instalacji znajdziesz w artykule Umiejętności agenta Firebase.
Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me set up and use Firebase for the backend of my app. Set up Firestore database in **Enterprise edition**. Help me to choose the best location for my database instance.
Tworzenie bazy danych Firestore Enterprise
Jeśli nie masz jeszcze projektu w Firebase, utwórz go: 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 dotychczasowego projektu Google Cloud.
W panelu po lewej stronie kliknij Bazy danych i pamięć masowa > Firestore.
Kliknij Utwórz bazę danych.
Wybierz Enterprise jako tryb bazy danych.
Wybierz tryb działania Firestore w trybie natywnym, który obsługuje operacje podstawowe i operacje w potokach.
Wybierz lokalizację bazy danych.
Wybierz tryb początkowy dla urządzenia Cloud Firestore Security Rules:
- Tryb testowy
Dobry sposób na rozpoczęcie korzystania z bibliotek klienta mobilnego i internetowego, ale umożliwia każdemu odczytywanie i zastępowanie Twoich danych. Po zakończeniu testów zapoznaj się z sekcją Zabezpieczanie danych.
Aby rozpocząć korzystanie z pakietu SDK na platformy Apple, Androida lub do aplikacji internetowych, wybierz tryb testowy.
- tryb produkcyjny,
Odrzucanie wszystkich odczytów i zapisów z klientów mobilnych i internetowych. Uwierzytelnione serwery aplikacji (Python) nadal będą miały dostęp do bazy danych.
Początkowy zestaw Cloud Firestore Security Rules zostanie zastosowany do domyślnej bazy danych Cloud Firestore. Jeśli utworzysz wiele baz danych dla projektu, możesz wdrożyć Cloud Firestore Security Rules dla każdej z nich.
Kliknij Utwórz.
Gdy włączysz Firestore Enterprise, 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.
Web
- Postępuj zgodnie z instrukcjami, aby dodać Firebase do aplikacji internetowej.
-
Pakiet SDK Cloud Firestore jest dostępny jako pakiet npm.
Musisz zaimportować zarówno Firebase, jak i Cloud Firestore.npm install firebase@13.0.0 --save
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
iOS+
Postępuj zgodnie z instrukcjami, aby dodać Firebase do aplikacji na urządzenia Apple.
Do instalowania zależności Firebase i zarządzania nimi używaj menedżera pakietów Swift.
- W Xcode, po otwarciu projektu aplikacji, kliknij File > Swift Packages > Add Package Dependency (Plik > Pakiety Swift > Dodaj zależność pakietu).
- Gdy pojawi się prośba, dodaj repozytorium pakietu SDK Firebase na platformy Apple:
- Wybierz bibliotekę Firestore.
- Gdy skończysz, Xcode zacznie automatycznie przetwarzać i pobierać zależności w tle.
https://github.com/firebase/firebase-ios-sdk
Android
- Postępuj zgodnie z instrukcjami, aby dodać Firebase do aplikacji na Androida.
- Używając listy BoM Firebase dla Androida, zadeklaruj zależność z biblioteką Cloud Firestore na Androida w pliku Gradle modułu (na poziomie aplikacji) (zwykle
app/build.gradle.ktslubapp/build.gradle).dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.0.1")) // 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 korzystamy z listy BoM Firebase dla Androida, aplikacja zawsze używa zgodnych wersji bibliotek Firebase na Androida.
(Alternatywa) Zadeklaruj zależności biblioteki Firebase bez używania BoM
Jeśli nie zdecydujesz się na użycie Firebase BoM, musisz określić każdą wersję biblioteki Firebase w jej wierszu zależności.
Pamiętaj, że jeśli w aplikacji używasz kilku bibliotek Firebase, zdecydowanie zalecamy korzystanie z BoM do zarządzania wersjami bibliotek, co zapewnia 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:27.0.0") }
Szukasz modułu biblioteki przeznaczonego dla języka Kotlin? Począwszy od wersji z października 2023 r., zarówno deweloperzy Kotlin, jak i Java mogą korzystać z głównego modułu biblioteki (szczegółowe informacje znajdziesz w najczęstszych pytaniach dotyczących tej inicjatywy).
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); // When initializing Firestore, remember to use the name of the database you created earlier: const db = initializeFirestore(app, {}, 'your-new-enterprise-database');
Zastąp FIREBASE_CONFIGURATION adresem firebaseConfig aplikacji internetowej.
Aby zachować dane, gdy urządzenie utraci połączenie, zapoznaj się z dokumentacją dotyczącą włączania danych offline.
Swift
import FirebaseCore import FirebaseFirestore FirebaseApp.configure() // When initializing Firestore, remember to use the name of the database you created earlier: let db = Firestore.firestore(database: "your-new-enterprise-database")
Kotlin
// Access a Cloud Firestore instance from your Activity // When initializing Firestore, remember to use the name of the database you created earlier: val firestore = FirebaseFirestore.getInstance("your-new-enterprise-database")
Java
// Access a Cloud Firestore instance from your Activity // When initializing Firestore, remember to use the name of the database you created earlier: FirebaseFirestore firestore = FirebaseFirestore.getInstance("your-new-enterprise-database");
Dodawanie danych za pomocą operacji podstawowych
Aby poznać operacje podstawowe i operacje potoku 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, gdy po raz pierwszy dodajesz dane 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
// 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)") }
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); } });
Teraz dodaj kolejny dokument do kolekcji users. Zauważ, że ten dokument zawiera parę klucz-wartość (drugie imię), która nie pojawia się w pierwszym dokumencie. Dokumenty w kolekcji mogą zawierać różne zestawy informacji.
Web
// Add a second document with a generated ID. import { addDoc, collection } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
Web
// Add a second document with a generated ID. db.collection("users").add({ first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }) .then((docRef) => { console.log("Document written with ID: ", docRef.id); }) .catch((error) => { console.error("Error adding document: ", error); });
Swift
// Add a second document with a generated ID. do { let ref = try await db.collection("users").addDocument(data: [ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 ]) print("Document added with ID: \(ref.documentID)") } catch { print("Error adding document: \(error)") }
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); } });
Odczytywanie danych za pomocą operacji podstawowych
Użyj przeglądarki danych w konsoli Firebase, aby szybko sprawdzić, czy dane zostały dodane do Cloud Firestore.
Możesz też użyć metody „get”, aby pobrać całą kolekcję.
Web
import { collection, getDocs } from "firebase/firestore"; const querySnapshot = await getDocs(collection(db, "users")); querySnapshot.forEach((doc) => { console.log(doc.id, "=>", doc.data()); });
Web
db.collection("users").get().then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(doc.id, "=>", doc.data()); }); });
Swift
do { let snapshot = try await db.collection("users").getDocuments() for document in snapshot.documents { print("\(document.documentID) => \(document.data())") } } catch { print("Error getting documents: \(error)") }
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()); } } });
Odczytywanie danych za pomocą operacji potoku
Teraz możesz porównać zapytanie Pipeline z zapytaniem Core.
Web
// The import/require of "firebase/firestore/pipelines" has a side-effect // of extending the Firestore class with the `.pipeline()` method. // Without this import/require, you will not be able to create a Pipeline. // import { execute } from "firebase/firestore/pipelines"; const readDataPipeline = db.pipeline() .collection("users"); // Execute the pipeline and handle the result try { const querySnapshot = await execute(readDataPipeline); querySnapshot.results.forEach((result) => { console.log(`${result.id} => ${result.data()}`); }); } catch (error) { console.error("Error getting documents: ", error); }
Swift
do { // Initialize a Firestore Pipeline instance and specify the "users" collection as the // input stage. let snapshot = try await db.pipeline() .collection("users") .execute() // Execute the pipeline to retrieve documents. // Iterate through the documents in the pipeline results, similar to a regular query // snapshot. for result in snapshot.results { print("\(result.id ?? "no ID") => \(result.data)") } } catch { print("Error getting documents with pipeline: \(error)") }
Kotlin
val readDataPipeline = db.pipeline() .collection("users") // Execute the pipeline and handle the result readDataPipeline.execute() .addOnSuccessListener { result -> for (document in result) { println("${document.getId()} => ${document.getData()}") } } .addOnFailureListener { exception -> println("Error getting documents: $exception") }
Java
Pipeline readDataPipeline = db.pipeline() .collection("users"); readDataPipeline.execute() .addOnSuccessListener(new OnSuccessListener<Pipeline.Snapshot>() { @Override public void onSuccess(Pipeline.Snapshot snapshot) { for (PipelineResult result : snapshot.getResults()) { System.out.println(result.getId() + " => " + result.getData()); } } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { System.out.println("Error getting documents: " + e); } });
Zabezpieczanie danych w pakietach SDK na potrzeby aplikacji internetowych i mobilnych
Jeśli używasz pakietu SDK dla platform internetowych, Androida lub Apple, użyj Firebase Authentication i Cloud Firestore Security Rules, aby zabezpieczyć dane w Cloud Firestore.
Oto kilka podstawowych zestawów reguł, od których możesz zacząć. Reguły zabezpieczeń możesz modyfikować w konsoli Firebase na karcie Bazy danych i pamięć masowa > Firestore > Reguły.
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 produkcyjny,
// 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 środowisku produkcyjnym, podejmij też działania, aby mieć pewność, że tylko klienci Twojej aplikacji będą mieć dostęp do danych Cloud Firestore. Zapoznaj się z dokumentacją Sprawdzania aplikacji.
Jeśli używasz jednego z pakietów SDK serwera, do zabezpieczenia danych w Cloud Firestore użyj Identity and Access Management (IAM).
Dalsze kroki
Pogłębiaj swoją wiedzę na temat operacji Core i Pipeline, korzystając z tych tematów:
- Więcej informacji o wykonywaniu zapytań za pomocą operacji podstawowych
- Dowiedz się więcej o wykonywaniu zapytań za pomocą operacji potoku.
- Dowiedz się, jak ulepszyć narzędzia dla programistów AI, aby skuteczniej wykonywać zadania, i jak stosować sprawdzone metody Cloud Firestore (np. pisanie Cloud Firestore Security Rules) za pomocą umiejętności agenta Firebase.