Mulai menggunakan edisi Cloud Firestore Standard

Panduan mulai cepat ini menunjukkan cara menyiapkan Cloud Firestore, menambahkan data, lalu melihat data yang baru saja ditambahkan di Firebase console.

Cloud Firestore mendukung SDK seluler atau web dan library klien server:

  • Cloud Firestore mendukung SDK untuk Android, iOS, dan web serta lainnya. Bersama Cloud Firestore Security Rules dan Firebase Authentication, SDK seluler dan web mendukung arsitektur aplikasi serverless tempat klien terhubung langsung ke database Cloud Firestore Anda.

  • Cloud Firestore mendukung library klien server untuk C#, Go, Java, Node.js, PHP, Python, dan Ruby. Gunakan library klien ini untuk menyiapkan lingkungan server dengan hak istimewa yang memiliki akses penuh ke database Anda. Pelajari lebih lanjut library ini di Panduan memulai untuk library klien server.

Membuat database Cloud Firestore

  1. Jika belum melakukannya, buat project Firebase: Di Firebase console, klik Add project, lalu ikuti petunjuk di layar untuk membuat project Firebase atau untuk menambahkan layanan Firebase ke project Google Cloud yang ada.

  2. Buka project Anda di Firebase console. Di panel kiri, luaskan Build, lalu pilih Firestore database.

  3. Klik Create database.

  4. Pilih lokasi untuk database Anda.

    Jika lokasi tidak dapat dipilih, berarti "lokasi untuk resource Google Cloud default" project Anda sudah ditetapkan. Beberapa resource project (seperti instance Cloud Firestore default) memiliki dependensi lokasi yang sama, dan lokasinya dapat ditetapkan selama pembuatan project atau saat menyiapkan layanan lain yang memiliki dependensi lokasi ini.

  5. Pilih mode awal untuk Cloud Firestore Security Rules 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 membaca bagian Melindungi data.

    Untuk memulai dengan web, platform Apple, atau Android SDK, pilih mode pengujian.

    Mode produksi

    Menolak 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 mulai menggunakan library klien server C#, Go, Java, Node.js, PHP, Python, atau Ruby, pilih mode produksi.

    Kumpulan Cloud Firestore Security Rules awal Anda akan diterapkan ke database Cloud Firestore default. Jika Anda membuat beberapa database untuk project, Anda dapat men-deploy Cloud Firestore Security Rules untuk setiap database.

  6. Klik Create.

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

  1. Ikuti petunjuk untuk menambahkan Firebase ke aplikasi web Anda.
  2. Cloud Firestore SDK tersedia sebagai paket npm.
    npm install firebase@12.8.0 --save
    Anda harus mengimpor Firebase dan Cloud Firestore.
    import { initializeApp } from "firebase/app";
    import { getFirestore } from "firebase/firestore";

Web

  1. Ikuti petunjuk untuk menambahkan Firebase ke aplikasi web Anda.
  2. Tambahkan library Firebase dan Cloud Firestore ke aplikasi Anda:
    <script src="https://www.gstatic.com/firebasejs/12.8.0/firebase-app-compat.js"></script>
    <script src="https://www.gstatic.com/firebasejs/12.8.0/firebase-firestore-compat.js"></script>
    Cloud Firestore SDK juga tersedia sebagai paket npm.
    npm install firebase@12.8.0 --save
    Anda harus mewajibkan Firebase dan Cloud Firestore secara manual.
    import firebase from "firebase/compat/app";
    // Required for side-effects
    import "firebase/firestore";
iOS+

Ikuti petunjuk untuk menambahkan Firebase ke aplikasi Apple Anda.

Gunakan Swift Package Manager untuk menginstal dan mengelola dependensi Firebase.

  1. Di Xcode, dengan project aplikasi Anda dalam keadaan terbuka, buka File > Swift Packages > Add Package Dependency.
  2. Saat diminta, tambahkan repositori SDK platform Apple Firebase:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. Pilih library Firestore.
  5. Setelah selesai, Xcode akan otomatis mulai me-resolve dan mendownload dependensi Anda di latar belakang.
Android
  1. Ikuti petunjuk untuk menambahkan Firebase ke aplikasi Android Anda.
  2. Dengan menggunakan Firebase Android BoM, deklarasikan dependensi untuk library Cloud Firestore untuk Android di file Gradle modul (level aplikasi) (biasanya app/build.gradle.kts atau app/build.gradle).
    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:34.8.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.

    Perlu diperhatikan bahwa jika Anda menggunakan beberapa library Firebase di aplikasi, 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:26.1.0")
    }

    Mencari modul library khusus Kotlin? Mulai rilis Oktober 2023, developer Kotlin dan Java dapat bergantung pada modul library utama (untuk mengetahui detailnya, lihat FAQ tentang inisiatif ini).

Dart

  1. Jika belum melakukannya, konfigurasikan dan inisialisasi Firebase di aplikasi Flutter Anda.
  2. Dari root project Flutter Anda, jalankan perintah berikut untuk menginstal plugin:
    flutter pub add cloud_firestore
  3. Setelah selesai, build ulang aplikasi Flutter Anda:
    flutter run
  4. Opsional: Kurangi waktu build iOS & macOS dengan menyertakan framework yang telah dikompilasi sebelumnya.

    Saat ini, Firestore SDK untuk iOS bergantung pada kode yang memerlukan waktu lebih dari 5 menit untuk di-build di Xcode. Untuk mengurangi waktu build secara signifikan, Anda dapat menggunakan versi yang telah dikompilasi sebelumnya dengan menambahkan baris ini ke blok target 'Runner' do di Podfile Anda:

    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

    Ganti IOS_SDK_VERSION dengan versi Firebase iOS SDK yang ditentukan dalam file firebase_sdk_version.rb firebase_core. Jika Anda tidak menggunakan firebase_core versi terbaru, cari file ini dalam cache paket Pub lokal Anda (biasanya ~/.pub-cache).

    Selain itu, pastikan Anda telah mengupgrade CocoaPods ke versi 1.9.1 atau yang lebih tinggi:

    gem install cocoapods

    Untuk mengetahui informasi selengkapnya, lihat masalah di GitHub.

C++
  1. Ikuti petunjuk untuk menambahkan Firebase ke project C++ Anda.
  2. Antarmuka C++ untuk Android.
    • Dependensi Gradle. Tambahkan kode berikut ke file Gradle modul (level aplikasi), 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}")
              
  3. Untuk menyiapkan integrasi desktop, baca bagian Menambahkan Firebase ke project C++ Anda.
Unity
  1. Ikuti petunjuk untuk menambahkan Firebase ke project Unity Anda.
  2. Gunakan antarmuka Unity untuk mengonfigurasi project Anda guna meminifikasi build Android.
  3. Anda harus meminifikasi build tersebut untuk menghindari pesan Error while merging dex archives.

    • Opsi ini dapat ditemukan di Setelan Pemain > Android > Memublikasikan Setelan > Meminifikasi.
    • Opsinya mungkin lain pada versi Unity berbeda, jadi baca dokumentasi resmi Unity dan Panduan Debug Build Unity Firebase.
    • Jika, setelah mengaktifkan minifikasi, jumlah metode yang direferensikan masih melebihi batas, opsi lainnya adalah mengaktifkan multidex di:
      • mainTemplate.gradle jika Template Gradle Khusus pada Setelan Pemain diaktifkan
      • atau, file build.gradle level modul, jika Anda menggunakan Android Studio untuk mem-build project yang diekspor.

(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, kenali Firebase Local Emulator Suite yang merupakan sekumpulan alat yang dapat Anda gunakan untuk membuat prototipe dan menguji fungsi Cloud Firestore. Jika Anda sedang mencoba berbagai model data, mengoptimalkan aturan keamanan, atau berupaya menemukan cara yang paling hemat biaya untuk berinteraksi dengan backend, akan sangat bermanfaat jika Anda dapat bekerja secara lokal tanpa men-deploy layanan langsung.

Emulator Cloud Firestore adalah bagian dari Local Emulator Suite, yang memungkinkan aplikasi Anda berinteraksi dengan konten dan konfigurasi database yang diemulasi, serta, jika diinginkan, dengan resource project yang diemulasi (fungsi, database lain, dan aturan keamanan).

Hanya diperlukan beberapa langkah untuk menggunakan emulator Cloud Firestore:

  1. Menambahkan satu baris kode ke konfigurasi pengujian aplikasi untuk terhubung ke emulator.
  2. Menjalankan firebase emulators:start dari root direktori project lokal Anda.
  3. Melakukan panggilan dari kode prototipe aplikasi Anda menggunakan platform Cloud Firestore SDK seperti biasa.

Panduan mendetail yang mencakup Cloud Firestore dan Cloud Functions telah tersedia. Sebaiknya baca juga pengantar Local Emulator Suite.

Lakukan inisialisasi Cloud Firestore

Lakukan inisialisasi instance 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);

Ganti FIREBASE_CONFIGURATION dengan firebaseConfig aplikasi web Anda.

Untuk mempertahankan data saat perangkat kehilangan koneksi, lihat dokumentasi Mengaktifkan Data 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();

Ganti FIREBASE_CONFIGURATION dengan firebaseConfig aplikasi web Anda.

Untuk mempertahankan data saat perangkat kehilangan koneksi, lihat dokumentasi Mengaktifkan Data Offline.

Swift
Catatan: Produk ini tidak tersedia di target watchOS dan App Clip.
import FirebaseCore
import FirebaseFirestore
FirebaseApp.configure()

let db = Firestore.firestore()
Objective-C
Catatan: Produk ini tidak tersedia di target watchOS dan App Clip.
@import FirebaseCore;
@import FirebaseFirestore;

// Use Firebase library to configure APIs
[FIRApp configure];
  
FIRFirestore *defaultFirestore = [FIRFirestore firestore];

Kotlin

// 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;
C++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance().
App::Create();
Firestore* db = Firestore::GetInstance();
Unity
using Firebase.Firestore;
using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;

Tambahkan data

Cloud Firestore menyimpan data dalam Documents yang disimpan di Collections. 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 baru dan dokumen menggunakan kode contoh berikut.

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
Catatan: Produk ini tidak tersedia di target watchOS dan App Clip.
// 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
Catatan: Produk ini tidak tersedia di target watchOS dan App Clip.
// 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

// 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}'));
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;
  }
});
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.");
});

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.
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
Catatan: Produk ini tidak tersedia di target watchOS dan App Clip.
// 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
Catatan: Produk ini tidak tersedia di target watchOS dan App Clip.
// 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

// 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}'));
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;
      }
    });
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.");
});

Membaca data

Gunakan penampil data di Firebase console untuk memverifikasi dengan cepat bahwa Anda telah menambahkan data ke Cloud Firestore.

Anda juga dapat menggunakan metode "get" untuk mengambil seluruh koleksi.

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
Catatan: Produk ini tidak tersedia di target watchOS dan App Clip.
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
Catatan: Produk ini tidak tersedia di target watchOS dan App Clip.
[[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

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()}");
  }
});
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;
  }
});
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.");
});

Melindungi data

Jika Anda menggunakan SDK platform web, Android, atau Apple, gunakan Firebase Authentication dan Cloud Firestore Security Rules untuk melindungi 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 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;
    }
  }
}

Mode produksi

// Deny read/write access to all users under any conditions
service cloud.firestore {
  match /databases/{database}/documents {
    match /{document=**} {
      allow read, write: if false;
    }
  }
}

Sebelum men-deploy aplikasi web, Android, atau iOS ke produksi, lakukan juga langkah-langkah untuk memastikan bahwa hanya klien aplikasi yang dapat mengakses data Cloud Firestore Anda. Lihat dokumentasi App Check.

Jika Anda menggunakan salah satu SDK server, gunakan Identity and Access Management (IAM) untuk melindungi data di Cloud Firestore.

Menonton video tutorial

Untuk mendapatkan panduan terperinci tentang cara mulai menggunakan library klien seluler Cloud Firestore, silakan tonton salah satu video tutorial berikut:

Web
iOS+
Android

Anda dapat menemukan video lainnya di channel YouTube Firebase.

Langkah berikutnya

Perdalam pengetahuan Anda tentang topik berikut: