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 project Cloud Firestore

  1. Buka Firebase Console dan buat project baru.

  2. Di bagian Database, klik Coba Firestore Beta.

  3. Klik Aktifkan.

Saat Anda membuat project 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/4.12.1/firebase.js"></script>
    <script src="https://www.gstatic.com/firebasejs/4.12.1/firebase-firestore.js"></script>
    Cloud Firestore SDK juga tersedia sebagai paket npm.
    npm install firebase@4.12.1 --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 Podfile Anda
    pod 'Firebase/Core'
    pod 'Firebase/Firestore'
  3. Simpan file dan jalankan pod install.
Android
  1. Ikuti petunjuk untuk menambahkan Firebase ke aplikasi Android Anda.
  2. Tambahkan library Cloud Firestore Android ke file app/build.gradle:
    compile 'com.google.firebase:firebase-firestore:15.0.0'
Java
  1. Tambahkan Firebase Admin SDK ke aplikasi Anda:
    • Menggunakan Gradle:
      compile 'com.google.firebase:firebase-admin:5.10.0'
      
    • Menggunakan Maven:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>5.10.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, dan Go) 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.
  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

Menginisialisasi Cloud Firestore

Melakukan inisialisasi pada instance Cloud Firestore:

Web
firebase.initializeApp({
  apiKey: '### FIREBASE API KEY ###',
  authDomain: '### FIREBASE AUTH DOMAIN ###',
  projectId: '### CLOUD FIRESTORE PROJECT ID ###'
});

// Initialize Cloud Firestore through Firebase
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];
  
Android
// Access a Cloud Firestore instance from your Activity

FirebaseFirestore db = FirebaseFirestore.getInstance();
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, 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, bergantung 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, bergantung 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);
      
      var db = admin.firestore();
      
      
    • Melakukan inisialisasi pada Google Cloud Platform
      const admin = require('firebase-admin');
      
      admin.initializeApp({
        credential: admin.credential.applicationDefault()
      });
      
      var 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');
      
      var serviceAccount = require('path/to/serviceAccountKey.json');
      
      admin.initializeApp({
        credential: admin.credential.cert(serviceAccount)
      });
      
      var 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, 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
    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
    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);
    }
    

    Menambahkan 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);
          }
        }];
      
    Android
    // 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);
                }
            });
    
    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
    var docRef = db.collection('users').doc('alovelace');
    
    var 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);
      

    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);
          }
        }];
      
    Android
    // 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);
                }
            });
    
    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
    var aTuringRef = db.collection('users').doc('aturing');
    
    var 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);
      

    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);
            }
          }
        }];
      
    Android
    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());
                    }
                }
            });
    
    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.get()
    
    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);
      

    Melindungi data

    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 sesungguhnya dengan mengikuti codelab untuk Android, iOS, atau Web.
    • Model data — Pelajari lebih lanjut tentang pembuatan struktur data di Cloud Firestore, termasuk data hierarkis dan subkoleksi.
    • Menambahkan data — Pelajari lebih lanjut tentang cara membuat dan memperbarui data di Cloud Firestore.
    • Mendapatkan data — Pelajari lebih lanjut tentang cara mengambil data.
    • 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.

    Kirim masukan tentang...

    Butuh bantuan? Kunjungi halaman dukungan kami.