Panduan memulai ini menunjukkan cara menyiapkan Cloud Firestore, menambahkan data, lalu melihat data yang baru saja ditambahkan di Firebase console.
Membuat database Cloud Firestore
Jika Anda belum melakukannya, buat project Firebase: Di Firebase console, klik Tambahkan project, lalu ikuti petunjuk di layar untuk membuat project Firebase atau untuk menambahkan layanan Firebase ke project GCP yang ada.
Buka bagian Cloud Firestore di Firebase console. Anda akan diminta untuk memilih project Firebase yang ada. Ikuti alur kerja pembuatan database.
Pilih mode mulai untuk Aturan Keamanan Cloud Firestore Anda:
- Mode pengujian
Cocok untuk memulai dengan library klien seluler dan web, tetapi memungkinkan siapa pun untuk membaca dan menimpa data Anda. Setelah melakukan pengujian, pastikan untuk meninjau bagian Mengamankan data Anda.
Untuk memulai dengan web, iOS, atau Android SDK, pilih mode uji.
- Mode terkunci
Menyangkal semua pembacaan dan penulisan dari klien seluler dan web. Server aplikasi terautentikasi (C#, Go, Java, Node.js, PHP, Python, atau Ruby) masih dapat mengakses database Anda.
Untuk memulai dengan library klien server C#, Go, Java, Node.js, PHP, Python, atau Ruby, pilih mode terkunci.
Pilih lokasi untuk database Anda.
Setelan lokasi ini adalah lokasi resource Google Cloud Platform (GCP) default project Anda. Perlu diperhatikan bahwa lokasi ini akan digunakan untuk layanan GCP di project Anda yang memerlukan setelan lokasi, khususnya, bucket Cloud Storage default dan aplikasi App Engine (yang diperlukan jika Anda menggunakan Cloud Scheduler).
Jika tidak dapat memilih lokasi, project Anda sudah memiliki lokasi resource GCP default. Lokasi ditetapkan baik selama pembuatan project atau ketika menyiapkan layanan lain yang memerlukan setelan lokasi.
Klik Selesai.
Saat Anda mengaktifkan Cloud Firestore, API di Pengelola Cloud API juga akan aktif.
Menyiapkan lingkungan pengembangan
Tambahkan dependensi dan library klien yang dibutuhkan ke aplikasi Anda.
Web
- Ikuti petunjuk untuk menambahkan Firebase ke aplikasi Web Anda.
- Tambahkan library Firebase dan Cloud Firestore ke aplikasi Anda:
<script src="https://www.gstatic.com/firebasejs/8.3.1/firebase-app.js"></script> <script src="https://www.gstatic.com/firebasejs/8.3.1/firebase-firestore.js"></script>
Cloud Firestore SDK juga tersedia sebagai paket npm.npm install firebase@8.3.1 --save
Anda harus meminta Firebase dan Cloud Firestore secara manual.const firebase = require("firebase"); // Required for side-effects require("firebase/firestore");
iOS
- Ikuti petunjuk untuk menambahkan Firebase ke aplikasi iOS Anda.
- Tambahkan pod Cloud Firestore ke
Podfile
Andapod 'Firebase/Firestore' # Optionally, include the Swift extensions if you're using Swift. pod 'FirebaseFirestoreSwift'
- Simpan file dan jalankan
pod install
.
Java
- Ikuti petunjuk untuk menambahkan Firebase ke aplikasi Android Anda.
- Dengan Firebase Android BoM, deklarasikan dependensi untuk library Cloud Firestore Android di file Gradle modul (level aplikasi)
(biasanya
app/build.gradle
).dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:26.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' }
Dengan Firebase Android BoM, aplikasi Anda akan selalu menggunakan versi library Android Firebase yang kompatibel.
(Alternatif) Deklarasikan dependensi library Firebase tanpa menggunakan BoM
Jika memilih untuk tidak menggunakan Firebase BoM, Anda harus menentukan setiap versi library Firebase di baris dependensinya.
Perhatikan bahwa jika Anda menggunakan beberapa library Firebase di aplikasi Anda, sebaiknya gunakan BoM untuk mengelola versi library yang memastikan bahwa semua versi kompatibel.
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:22.1.1' }
Kotlin+KTX
- Ikuti petunjuk untuk menambahkan Firebase ke aplikasi Android Anda.
- Dengan Firebase Android BoM, deklarasikan dependensi untuk library Cloud Firestore Android di file Gradle modul (level aplikasi)
(biasanya
app/build.gradle
).dependencies { // Import the BoM for the Firebase platform implementation platform('com.google.firebase:firebase-bom:26.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-ktx' }
Dengan Firebase Android BoM, aplikasi Anda akan selalu menggunakan versi library Android Firebase yang kompatibel.
(Alternatif) Deklarasikan dependensi library Firebase tanpa menggunakan BoM
Jika memilih untuk tidak menggunakan Firebase BoM, Anda harus menentukan setiap versi library Firebase di baris dependensinya.
Perhatikan bahwa jika Anda menggunakan beberapa library Firebase di aplikasi Anda, sebaiknya gunakan BoM untuk mengelola versi library yang memastikan bahwa semua versi kompatibel.
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-ktx:22.1.1' }
Java
- Tambahkan Firebase Admin SDK ke aplikasi Anda:
-
Menggunakan Gradle:
compile 'com.google.firebase:firebase-admin:7.1.1'
-
Menggunakan Maven:
<dependency> <groupId>com.google.firebase</groupId> <artifactId>firebase-admin</artifactId> <version>7.1.1</version> </dependency>
-
Menggunakan Gradle:
- Ikuti petunjuk di bawah ini untuk melakukan inisialisasi pada Cloud Firestore dengan kredensial yang tepat di lingkungan Anda.
Python
- Tambahkan Firebase Admin SDK ke aplikasi Python Anda:
pip install --upgrade firebase-admin
- Ikuti petunjuk di bawah ini untuk melakukan inisialisasi pada Cloud Firestore dengan kredensial yang tepat di lingkungan Anda.
C++
- Ikuti petunjuk untuk menambahkan Firebase ke project C++ Anda.
- Antarmuka C ++ untuk Android.
- Dependensi Gradle Tambahkan kode berikut ke file Gradle modul (level aplikasi) Anda (biasanya
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 }
- Dependensi biner. Demikian pula, cara yang direkomendasikan untuk mendapatkan dependensi biner adalah dengan menambahkan kode berikut ke file
CMakeLists.txt
Anda: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}")
- Untuk menyiapkan integrasi desktop, baca bagian Menambahkan Firebase ke project C ++ Anda.
Unity
- Ikuti petunjuk untuk menambahkan Firebase ke project Unity Anda.
- Antarmuka Unity untuk Android.
- Pilih File > Build Settings
- Alihkan 'Platform' ke 'Android' dan klik 'Switch Platform'
- Klik ‘Player Settings…’
- Di UI Unity utama, di bawah 'Settings for Android', pilih 'Publishing Settings'
- Di bagian 'Minify', ubah setelan Release dan Debug dari 'None' menjadi 'ProGuard'
Saat membuat aplikasi untuk Android, aktifkan ProGuard untuk menghindari batas Android DEX. Untuk melakukannya, di editor Unity:
Node.js
-
Tambahkan Firebase Admin SDK ke aplikasi Anda:
npm install firebase-admin --save
- Ikuti petunjuk di bawah ini untuk melakukan inisialisasi pada Cloud Firestore dengan kredensial yang tepat di lingkungan Anda.
Go
- Tambahkan Firebase Admin SDK ke aplikasi Go Anda:
go get firebase.google.com/go
- Ikuti petunjuk di bawah ini untuk melakukan inisialisasi pada Cloud Firestore dengan kredensial yang tepat di lingkungan Anda.
PHP
-
Library klien server Cloud Firestore (Java, Node.js, Python, Go, PHP, C#, dan Ruby) menggunakan Kredensial Default Aplikasi Google untuk melakukan autentikasi.
-
Untuk mengautentikasi dari lingkungan development, atur agar variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
mengarah ke file kunci akun layanan JSON. Anda dapat membuat file kunci di halaman Kredensial Konsol API.export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- Anda tidak perlu melakukan autentikasi jika menjalankan aplikasi pada App Engine atau Compute Engine di lingkungan produksi. Cukup gunakan project yang sama dengan yang Anda gunakan untuk Cloud Firestore. Atau, siapkan akun layanan.
-
Untuk mengautentikasi dari lingkungan development, atur agar variabel lingkungan
- Instal dan aktifkan ekstensi gRPC untuk PHP, yang akan Anda perlukan untuk library klien.
-
Tambahkan library PHP Cloud Firestore ke aplikasi Anda:
composer require google/cloud-firestore
C#
-
Library klien server Cloud Firestore (Java, Node.js, Python, Go, PHP, C#, dan Ruby) menggunakan Kredensial Default Aplikasi Google untuk melakukan autentikasi.
-
Untuk mengautentikasi dari lingkungan development, atur agar variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
mengarah ke file kunci akun layanan JSON. Anda dapat membuat file kunci di halaman Kredensial Konsol API.export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- Anda tidak perlu melakukan autentikasi jika menjalankan aplikasi pada App Engine atau Compute Engine di lingkungan produksi. Cukup gunakan project yang sama dengan yang Anda gunakan untuk Cloud Firestore. Atau, siapkan akun layanan.
-
Untuk mengautentikasi dari lingkungan development, atur agar variabel lingkungan
-
Tambahkan library C# Cloud Firestore ke aplikasi Anda di file
.csproj
:<ItemGroup> <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" /> </ItemGroup>
-
Tambahkan hal berikut ke file
Program.cs
Anda:using Google.Cloud.Firestore;
Ruby
-
Library klien server Cloud Firestore (Java, Node.js, Python, Go, PHP, C#, dan Ruby) menggunakan Kredensial Default Aplikasi Google untuk melakukan autentikasi.
-
Untuk mengautentikasi dari lingkungan development, atur agar variabel lingkungan
GOOGLE_APPLICATION_CREDENTIALS
mengarah ke file kunci akun layanan JSON. Anda dapat membuat file kunci di halaman Kredensial Konsol API.export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
- Anda tidak perlu melakukan autentikasi jika menjalankan aplikasi pada App Engine atau Compute Engine di lingkungan produksi. Cukup gunakan project yang sama dengan yang Anda gunakan untuk Cloud Firestore. Atau, siapkan akun layanan.
-
Untuk mengautentikasi dari lingkungan development, atur agar variabel lingkungan
-
Tambahkan library Ruby Cloud Firestore ke aplikasi Anda di
Gemfile
:gem "google-cloud-firestore"
-
Instal dependensi dari
Gemfile
menggunakan:bundle install
(Opsional) Membuat prototipe dan melakukan pengujian dengan Firebase Local Emulator Suite
Bagi developer seluler, sebelum membahas cara aplikasi Anda menulis ke dan membaca dari Cloud Firestore, mari kita memperkenalkan sekumpulan alat yang dapat Anda gunakan untuk membuat prototipe dan menguji fungsionalitas Cloud Firestore: Firebase Local Emulator Suite. Jika Anda mencoba berbagai model data, mengoptimalkan aturan keamanan, atau berupaya menemukan cara yang paling hemat untuk berinteraksi dengan backend, mampu bekerja secara lokal tanpa men-deploy layanan langsung bisa jadi ide yang bagus.
Emulator Cloud Firestore adalah bagian dari Local Emulator Suite yang memungkinkan aplikasi berinteraksi dengan konfigurasi dan konten database teremulasi, serta secara opsional resource project teremulasi (fungsi, database lain, dan aturan keamanan). Perhatikan bahwa Local Emulator Suite belum mendukung Cloud Storage teremulasi.
Penggunaan emulator Cloud Firestore hanya memerlukan beberapa langkah:
- Menambahkan baris kode ke konfigurasi pengujian aplikasi untuk terhubung ke emulator.
- Menjalankan
firebase emulators:start
dari root direktori project lokal Anda. - Membuat panggilan dari kode prototipe aplikasi Anda menggunakan SDK platform Cloud Firestore seperti biasa.
Panduan mendetail yang mencakup Cloud Frirestore dan Cloud Functions telah tersedia. Sebaiknya baca juga Pengantar Local Emulator Suite.
Menginisialisasi Cloud Firestore
Melakukan inisialisasi pada instance Cloud Firestore:
Web
// Initialize Cloud Firestore through Firebase firebase.initializeApp({ apiKey: '### FIREBASE API KEY ###', authDomain: '### FIREBASE AUTH DOMAIN ###', projectId: '### CLOUD FIRESTORE PROJECT ID ###' }); var db = firebase.firestore();Nilai untuk `initializeApp` dapat ditemukan di `firebaseConfig` aplikasi web Anda. Untuk mempertahankan data saat perangkat kehilangan koneksi, lihat dokumentasi Mengaktifkan Data Offline.
Swift
import Firebase FirebaseApp.configure() let db = Firestore.firestore()
Objective-C
@import Firebase; // Use Firebase library to configure APIs [FIRApp configure]; FIRFirestore *defaultFirestore = [FIRFirestore firestore];
Java
// Access a Cloud Firestore instance from your Activity FirebaseFirestore db = FirebaseFirestore.getInstance();
Kotlin+KTX
// Access a Cloud Firestore instance from your Activity val db = Firebase.firestore
Java
Inisialisasi Cloud Firestore SDK dilakukan dengan cara yang berbeda, bergantung pada lingkungan Anda. Berikut adalah metode yang paling umum. Untuk referensi yang lebih lengkap, baca bagian Melakukan Inisialisasi 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();
Untuk menggunakan Firebase Admin SDK pada server Anda sendiri, gunakan akun layanan.
Buka IAM & admin > Akun layanan di Cloud Platform Console. Buat kunci pribadi baru dan simpan file JSON. Lalu gunakan file tersebut untuk melakukan inisialisasi 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
Inisialisasi Cloud Firestore SDK dilakukan dengan cara yang berbeda, bergantung pada lingkungan Anda. Berikut adalah metode yang paling umum. Untuk referensi yang lebih lengkap, baca bagian Melakukan Inisialisasi Admin SDK.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, { 'projectId': project_id, }) db = firestore.client()
Untuk menggunakan Firebase Admin SDK pada server Anda sendiri, gunakan akun layanan.
Buka IAM & admin > Akun layanan di Cloud Platform Console. Buat kunci pribadi baru dan simpan file JSON. Lalu gunakan file tersebut untuk melakukan inisialisasi 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') firebase_admin.initialize_app(cred) db = firestore.client()
C++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance(). App::Create(); Firestore* db = Firestore::GetInstance();
Node.js
Inisialisasi Cloud Firestore SDK dilakukan dengan cara yang berbeda, bergantung pada lingkungan Anda. Berikut adalah metode yang paling umum. Untuk referensi yang lebih lengkap, baca bagian Melakukan Inisialisasi Admin SDK.-
Melakukan inisialisasi pada Cloud Functions
const admin = require('firebase-admin'); admin.initializeApp(); const db = admin.firestore();
-
Melakukan inisialisasi pada Google Cloud Platform
const admin = require('firebase-admin'); admin.initializeApp({ credential: admin.credential.applicationDefault() }); const db = admin.firestore();
-
Melakukan inisialisasi pada server Anda sendiri
Untuk menggunakan Firebase Admin SDK pada server Anda sendiri (atau lingkungan Node.js lainnya), gunakan akun layanan. Buka IAM & admin > Akun layanan di Cloud Platform Console. Buat kunci pribadi baru dan simpan file JSON. Lalu gunakan file tersebut untuk melakukan inisialisasi SDK:
const admin = require('firebase-admin'); const serviceAccount = require('./path/to/serviceAccountKey.json'); admin.initializeApp({ credential: admin.credential.cert(serviceAccount) }); const db = admin.firestore();
Go
Inisialisasi Cloud Firestore SDK dilakukan dengan cara yang berbeda, bergantung pada lingkungan Anda. Berikut adalah metode yang paling umum. Untuk referensi yang lebih lengkap, baca bagian Melakukan Inisialisasi Admin SDK.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()
Untuk menggunakan Firebase Admin SDK pada server Anda sendiri, gunakan akun layanan.
Buka IAM & admin > Akun layanan di Cloud Platform Console. Buat kunci pribadi baru dan simpan file JSON. Lalu gunakan file tersebut untuk melakukan inisialisasi 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
use Google\Cloud\Firestore\FirestoreClient; /** * Initialize Cloud Firestore with default project ID. * ``` * initialize(); * ``` */ function initialize() { // Create the Cloud Firestore client $db = new FirestoreClient(); printf('Created Cloud Firestore client with default project ID.' . PHP_EOL); }
Unity
using Firebase.Firestore; using Firebase.Extensions; FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
C#
FirestoreDb db = FirestoreDb.Create(project); Console.WriteLine("Created Cloud Firestore client with project ID: {0}", project);
Ruby
require "google/cloud/firestore" firestore = Google::Cloud::Firestore.new project_id: project_id puts "Created Cloud Firestore client with given project ID."
Tambahkan data
Cloud Firestore menyimpan data dalam Dokumen yang disimpan di Koleksi. Cloud Firestore membuat koleksi dan dokumen secara implisit saat pertama kali Anda menambahkan data ke dokumen. Anda tidak perlu secara eksplisit membuat koleksi atau dokumen.
Buat koleksi dan dokumen baru menggunakan kode contoh berikut.
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 var ref: DocumentReference? = nil ref = db.collection("users").addDocument(data: [ "first": "Ada", "last": "Lovelace", "born": 1815 ]) { err in if let err = err { print("Error adding document: \(err)") } else { print("Document added with ID: \(ref!.documentID)") } }
Objective-C
// 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); } }];
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); } });
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
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(u'users').document(u'alovelace') doc_ref.set({ u'first': u'Ada', u'last': u'Lovelace', u'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() << '\n'; } else { std::cout << "Error adding document: " << future.error_message() << '\n'; } });
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
$docRef = $db->collection('users')->document('lovelace'); $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."
Sekarang tambahkan dokumen lain ke koleksi users
. Perhatikan bahwa dokumen ini berisi key-value pair (nama tengah) yang tidak muncul di dokumen pertama. Dokumen dalam koleksi dapat berisi kumpulan informasi yang berbeda.
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. ref = db.collection("users").addDocument(data: [ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 ]) { err in if let err = err { print("Error adding document: \(err)") } else { print("Document added with ID: \(ref!.documentID)") } }
Objective-C
// 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); } }];
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); } });
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
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(u'users').document(u'aturing') doc_ref.set({ u'first': u'Alan', u'middle': u'Mathison', u'last': u'Turing', u'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() << '\n'; } else { std::cout << "Error adding document: " << future.error_message() << '\n'; } });
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
$docRef = $db->collection('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."
Membaca data
Untuk memverifikasi dengan cepat bahwa Anda telah menambahkan data ke Cloud Firestore, gunakan penampil data di Firebase console.
Anda juga dapat menggunakan metode "get" untuk mengambil seluruh koleksi.
Web
db.collection("users").get().then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(`${doc.id} => ${doc.data()}`); }); });
Swift
db.collection("users").getDocuments() { (querySnapshot, err) in if let err = err { print("Error getting documents: \(err)") } else { for document in querySnapshot!.documents { print("\(document.documentID) => \(document.data())") } } }
Objective-C
[[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); } } }];
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()); } } });
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
// 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(u'users') docs = users_ref.stream() 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 << '\n'; } } else { std::cout << "Error getting documents: " << future.error_message() << '\n'; } });
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
$usersRef = $db->collection('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
Melindungi data
Jika Anda menggunakan Web, Android, atau iOS SDK, gunakan Firebase Authentication dan Aturan Keamanan Cloud Firestore untuk mengamankan data Anda di Cloud Firestore.
Berikut adalah beberapa kumpulan aturan dasar yang dapat Anda gunakan untuk memulai. Anda dapat mengubah aturan keamanan di tab Aturan konsol.
Auth diperlukan
// Allow read/write access on all documents to any user signed in to the application
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if request.auth != null;
}
}
}
Mode terkunci
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Mode pengujian
// Allow read/write access to all users under any conditions
// Warning: **NEVER** use this rule set in production; it allows
// anyone to overwrite your entire database.
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if true;
}
}
}
Jika Anda menggunakan salah satu SDK server, gunakan Pengelolaan Akses dan Identitas (IAM) untuk mengamankan data di Cloud Firestore.
Menonton video tutorial
Untuk mendapatkan panduan terperinci tentang cara memulai library klien seluler dan web Cloud Firestore, silakan tonton salah satu video tutorial berikut:
Web v8
iOS
Android
Anda dapat menemukan lebih banyak video di channel YouTube Firebase.
Langkah berikutnya
Perdalam pengetahuan Anda tentang topik berikut:
- Codelabs — Pelajari cara menggunakan Cloud Firestore dalam aplikasi yang sesungguhnya dengan mengikuti codelab untuk Android, iOS, atau Web.
- Model data — Pelajari lebih lanjut pembuatan struktur data di Cloud Firestore, termasuk data hierarkis dan subkoleksi.
- Menambahkan data — Pelajari lebih lanjut cara membuat dan memperbarui data di Cloud Firestore.
- Mendapatkan data — Pelajari cara mengambil data lebih lanjut.
- Menjalankan kueri sederhana dan gabungan — Pelajari cara menjalankan kueri sederhana dan gabungan.
- Mengurutkan dan membatasi kueri Pelajari cara mengurutkan dan membatasi data yang dihasilkan oleh kueri.