Buka konsol

Memulai Cloud Firestore

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

Membuat database Cloud Firestore

  1. 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.

  2. Dari panel navigasi konsol, pilih Database, lalu klik Buat database untuk Cloud Firestore.

  3. Pilih mode mulai untuk Aturan Keamanan Cloud Firestore Anda:

    Mode uji

    Baik 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.

  4. 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.

  5. 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
  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/7.2.3/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.2.3/firebase-firestore.js"></script>
    Cloud Firestore SDK juga tersedia sebagai paket npm.
    npm install firebase@7.2.3 --save
    
    Anda harus meminta Firebase dan Cloud Firestore secara manual.
    const firebase = require("firebase");
    // Required for side-effects
    require("firebase/firestore");
    
iOS
  1. Ikuti petunjuk untuk menambahkan Firebase ke aplikasi iOS Anda.
  2. Tambahkan pod Cloud Firestore ke PodfileAnda
    pod 'Firebase/Core'
    pod 'Firebase/Firestore'
    
    # Optionally, include the Swift extensions if you're using Swift.
    pod 'FirebaseFirestoreSwift'
    
  3. Simpan file dan jalankan pod install.
Java
  1. Ikuti petunjuk untuk menambahkan Firebase ke aplikasi Android Anda.
  2. Dalam file build.gradle level project, pastikan Anda memasukkan repositori Maven Google di bagian buildscript dan allprojects.
  3. Tambahkan library Cloud Firestore Android ke file app/build.gradle:
    implementation 'com.google.firebase:firebase-firestore:21.2.1'
Kotlin
  1. Ikuti petunjuk untuk menambahkan Firebase ke aplikasi Android Anda.
  2. Dalam file build.gradle level project, pastikan Anda memasukkan repositori Maven Google di bagian buildscript dan allprojects.
  3. Tambahkan library Cloud Firestore Android ke file app/build.gradle:
    implementation 'com.google.firebase:firebase-firestore:21.2.1'
Java
  1. Tambahkan Firebase Admin SDK ke aplikasi Anda:
    • Menggunakan Gradle:
      compile 'com.google.firebase:firebase-admin:6.11.0'
      
    • Menggunakan Maven:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>6.11.0</version>
      </dependency>
           
  2. Ikuti petunjuk di bawah ini untuk melakukan inisialisasi pada Cloud Firestore dengan kredensial yang tepat di lingkungan Anda.
Python
  1. Tambahkan Firebase Admin SDK ke aplikasi Python Anda:
    pip install --upgrade firebase-admin
  2. Ikuti petunjuk di bawah ini untuk melakukan inisialisasi pada Cloud Firestore dengan kredensial yang tepat di lingkungan Anda.
Node.js
  1. Tambahkan Firebase Admin SDK ke aplikasi Anda:
    npm install firebase-admin --save
  2. Ikuti petunjuk di bawah ini untuk melakukan inisialisasi pada Cloud Firestore dengan kredensial yang tepat di lingkungan Anda.
Go
  1. Tambahkan Firebase Admin SDK ke aplikasi Go Anda:
    go get firebase.google.com/go
    
  2. Ikuti petunjuk di bawah ini untuk melakukan inisialisasi pada Cloud Firestore dengan kredensial yang tepat di lingkungan Anda.
PHP
  1. Library klien server Cloud Firestore (Java, Node.js, Python, Go, PHP, C#, dan Ruby) menggunakan Kredensial Default Aplikasi Google untuk melakukan autentikasi.
    • Untuk melakukan autentikasi 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.
  2. Instal dan aktifkan ekstensi gRPC untuk PHP, yang akan Anda perlukan untuk library klien.
  3. Tambahkan library Cloud Firestore PHP ke aplikasi Anda:
    composer require google/cloud-firestore
C#
  1. Library klien server Cloud Firestore (Java, Node.js, Python, Go, PHP, C#, dan Ruby) menggunakan Kredensial Default Aplikasi Google untuk melakukan autentikasi.
    • Untuk melakukan autentikasi 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.
  2. Tambahkan library Cloud Firestore C# ke aplikasi Anda di file .csproj:
    <ItemGroup>
      <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" />
    </ItemGroup>
  3. Tambahkan hal berikut ke file Program.cs:
    using Google.Cloud.Firestore;
Ruby
  1. Library klien server Cloud Firestore (Java, Node.js, Python, Go, PHP, C#, dan Ruby) menggunakan Kredensial Default Aplikasi Google untuk melakukan autentikasi.
    • Untuk melakukan autentikasi 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.
  2. Tambahkan library Cloud Firestore Ruby ke aplikasi Anda di Gemfile:
    gem "google-cloud-firestore"
  3. Instal dependensi dari Gemfile menggunakan:
    bundle install

Menginisialisasi Cloud Firestore

Menginisialisasi 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();
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
// Access a Cloud Firestore instance from your Activity
val db = FirebaseFirestore.getInstance()
Java
Inisialisasi Cloud Firestore SDK dilakukan dengan cara yang berbeda, tergantung pada lingkungan Anda. Berikut adalah metode yang paling umum. Untuk referensi yang lebih lengkap, lihat Melakukan inisialisasi Admin SDK.
  • Melakukan inisialisasi pada Google Cloud Platform
    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();
    
  • Melakukan inisialisasi pada server Anda sendiri

    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, tergantung pada lingkungan Anda. Berikut adalah metode yang paling umum. Untuk referensi yang lebih lengkap, lihat Melakukan inisialisasi Admin SDK.
  • Melakukan inisialisasi pada Google Cloud Platform
    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()
    
  • Melakukan inisialisasi pada server Anda sendiri

    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()
    
  • Node.js
    Inisialisasi Cloud Firestore SDK dilakukan dengan cara yang berbeda, tergantung pada lingkungan Anda. Berikut adalah metode yang paling umum. Untuk referensi yang lebih lengkap, lihat Melakukan inisialisasi Admin SDK.
    • Melakukan inisialisasi pada Cloud Functions
      const admin = require('firebase-admin');const functions = require('firebase-functions');
      
      admin.initializeApp(functions.config().firebase);
      
      let 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');
      let serviceAccount = require('path/to/serviceAccountKey.json');
      
      admin.initializeApp({
        credential: admin.credential.cert(serviceAccount)
      });
      
      let db = admin.firestore();
      
      
    Go
    Inisialisasi Cloud Firestore SDK dilakukan dengan cara yang berbeda, tergantung pada lingkungan Anda. Berikut adalah metode yang paling umum. Untuk referensi yang lebih lengkap, lihat Melakukan inisialisasi Admin SDK.
  • Melakukan inisialisasi pada Google Cloud Platform
    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()
    
  • Melakukan inisialisasi pada server Anda sendiri

    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);
    }
    
    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 dengan menggunakan kode contoh berikut.

    Web
    db.collection("users").add({
        first: "Ada",
        last: "Lovelace",
        born: 1815
    })
    .then(function(docRef) {
        console.log("Document written with ID: ", docRef.id);
    })
    .catch(function(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
    // 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
    })
      
    Node.js
    let docRef = db.collection('users').doc('alovelace');
    
    let setAda = 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);
      
    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 "users/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(function(docRef) {
        console.log("Document written with ID: ", docRef.id);
    })
    .catch(function(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
    // 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
    })
      
    Node.js
    let aTuringRef = db.collection('users').doc('aturing');
    
    let setAlan = 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);
      
    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 "users/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
    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(u'{} => {}'.format(doc.id, doc.to_dict()))
      
    Node.js
    db.collection('users').get()
      .then((snapshot) => {
        snapshot.forEach((doc) => {
          console.log(doc.id, '=>', doc.data());
        });
      })
      .catch((err) => {
        console.log('Error getting documents', err);
      });
      
    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);
      
    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 "users"
    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.uid != 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 uji

    // 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
    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 pembuatan struktur data di Cloud Firestore lebih lanjut, 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.