Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

Cloud Firestore'u kullanmaya başlayın

Bu hızlı başlangıç, Cloud Firestore'u nasıl kuracağınızı, veri ekleyeceğinizi ve ardından yeni eklediğiniz verileri Firebase konsolunda nasıl görüntüleyeceğinizi gösterir.

Cloud Firestore veritabanı oluşturun

  1. Henüz yapmadıysanız, bir Firebase projesi oluşturun: Firebase konsolunda , Proje ekle 'yi tıklayın, ardından bir Firebase projesi oluşturmak veya mevcut bir GCP projesine Firebase hizmetleri eklemek için ekrandaki talimatları izleyin.

  2. Firebase konsolunun Cloud Firestore bölümüne gidin. Mevcut bir Firebase projesini seçmeniz istenecektir. Veritabanı oluşturma iş akışını izleyin.

  3. Cloud Firestore Güvenlik Kurallarınız için bir başlangıç ​​modu seçin:

    Test modu

    Mobil ve web istemci kitaplıklarını kullanmaya başlamak için iyidir, ancak herkesin verilerinizi okuyup üzerine yazmasına olanak tanır. Testten sonra, Verilerinizi güvence altına alın bölümünü gözden geçirdiğinizden emin olun.

    Web, iOS veya Android SDK'yı kullanmaya başlamak için test modunu seçin.

    Kilitli mod

    Mobil ve web istemcilerinden gelen tüm okuma ve yazma işlemlerini reddeder. Kimliği doğrulanmış uygulama sunucularınız (C#, Go, Java, Node.js, PHP, Python veya Ruby) yine de veritabanınıza erişebilir.

    C#, Go, Java, Node.js, PHP, Python veya Ruby sunucu istemci kitaplığını kullanmaya başlamak için kilitli modu seçin.

  4. Veritabanınız için bir konum seçin.

    • Bu konum ayarı, projenizin varsayılan Google Cloud Platform (GCP) kaynak konumudur . Bu konumun, projenizdeki bir konum ayarı, özellikle de varsayılan Cloud Storage paketiniz ve App Engine uygulamanız (Cloud Scheduler kullanıyorsanız gereklidir) gerektiren GCP hizmetleri için kullanılacağını unutmayın.

    • Bir konum seçemiyorsanız, projenizin zaten bir varsayılan GCP kaynak konumu vardır. Ya proje oluşturma sırasında ya da bir konum ayarı gerektiren başka bir hizmet kurulurken ayarlandı.

  5. Bitti'yi tıklayın.

Cloud Firestore'u etkinleştirdiğinizde, Cloud API Manager'da API'yi de etkinleştirir.

Geliştirme ortamınızı ayarlayın

Uygulamanıza gerekli bağımlılıkları ve istemci kitaplıklarını ekleyin.

Web v8

  1. Firebase'i Web uygulamanıza eklemek için talimatları izleyin.
  2. Firebase ve Cloud Firestore kitaplıklarını uygulamanıza ekleyin:
    <script src="https://www.gstatic.com/firebasejs/8.6.8/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/8.6.8/firebase-firestore.js"></script>
    Cloud Firestore SDK, npm paketi olarak da mevcuttur.
    npm install firebase@8.6.8 --save
    
    Hem Firebase hem de Cloud Firestore'a manuel olarak ihtiyaç duymanız gerekir.
    const firebase = require("firebase");
    // Required for side-effects
    require("firebase/firestore");
    

Web v9

  1. Firebase'i Web uygulamanıza eklemek için talimatları izleyin.
  2. Cloud Firestore SDK, bir npm paketi olarak mevcuttur.
    npm install firebase@9.0.0-beta.2 --save
    
    Hem Firebase'i hem de Cloud Firestore'u içe aktarmanız gerekecek.
    import { initializeApp } from "firebase/app";
    import { getFirestore } from "firebase/firestore";
    
iOS
  1. Firebase'i iOS uygulamanıza eklemek için talimatları izleyin.
  2. Cloud Firestore bölmesini Podfile
    pod 'Firebase/Firestore'
    
    # Optionally, include the Swift extensions if you're using Swift.
    pod 'FirebaseFirestoreSwift'
    
    'nize ekleyin
  3. Dosyayı kaydedin ve pod install çalıştırın.

Java

  1. Firebase'i Android uygulamanıza eklemek için talimatları izleyin.
  2. Firebase Android BoM kullanarak, modülünüzdeki (uygulama düzeyi) Gradle dosyanızdaki (genellikle app/build.gradle ) Cloud Firestore Android kitaplığının bağımlılığını app/build.gradle .
    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.1.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'
    }
    

    Firebase Android BoM'yi kullanarak uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.

    (Alternatif) Bom kullanmadan Firebase kütüphane bağımlılıklarını beyan

    Firebase Malzeme Listesini kullanmamayı seçerseniz, her bir Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

    Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM'yi kullanmanızı önemle tavsiye ederiz, bu da tüm sürümlerin uyumlu olmasını sağlar.

    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:23.0.1'
    }
    

Kotlin+KTX

  1. Firebase'i Android uygulamanıza eklemek için talimatları izleyin.
  2. Firebase Android BoM kullanarak, modülünüzdeki (uygulama düzeyi) Gradle dosyanızdaki (genellikle app/build.gradle ) Cloud Firestore Android kitaplığının bağımlılığını app/build.gradle .
    dependencies {
        // Import the BoM for the Firebase platform
        implementation platform('com.google.firebase:firebase-bom:28.1.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'
    }
    

    Firebase Android BoM'yi kullanarak uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.

    (Alternatif) Bom kullanmadan Firebase kütüphane bağımlılıklarını beyan

    Firebase Malzeme Listesini kullanmamayı seçerseniz, her bir Firebase kitaplık sürümünü bağımlılık satırında belirtmeniz gerekir.

    Uygulamanızda birden fazla Firebase kitaplığı kullanıyorsanız kitaplık sürümlerini yönetmek için BoM'yi kullanmanızı önemle tavsiye ederiz, bu da tüm sürümlerin uyumlu olmasını sağlar.

    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:23.0.1'
    }
    
Java
  1. Firebase Admin SDK'sını uygulamanıza ekleyin:
    • Gradle'ı Kullanma:
      compile 'com.google.firebase:firebase-admin:7.3.0'
      
    • Maven'i kullanma:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>7.3.0</version>
      </dependency>
           
  2. Cloud Firestore'u ortamınızda uygun kimlik bilgileriyle başlatmak için aşağıdaki talimatları izleyin.
piton
  1. Firebase Admin SDK'sını Python uygulamanıza ekleyin:
    pip install --upgrade firebase-admin
  2. Cloud Firestore'u ortamınızda uygun kimlik bilgileriyle başlatmak için aşağıdaki talimatları izleyin.
C++
  1. Firebase'i C++ projenize eklemek için talimatları izleyin.
  2. Android için C++ arayüzü.
    • Gradle bağımlılıkları. Modülünüze (app-level) Gradle dosyanıza aşağıdakini ekleyin (genellikle 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
              }
              
    • İkili bağımlılıklar. Benzer şekilde, ikili bağımlılıkları almanın önerilen yolu, aşağıdakileri CMakeLists.txt dosyanıza eklemektir:
              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. Masaüstü entegrasyonunu ayarlamak için bkz. Firebase'i C++ projenize ekleyin .
Birlik
  1. Unity projenize Firebase eklemek için talimatları izleyin.
  2. Android için birlik arayüzü.
  3. Android için oluştururken, Android DEX sınırından kaçınmak için ProGuarding'i etkinleştirin. Bunu yapmak için Unity editöründe:

    1. Dosya > Yapı Ayarları'nı seçin
    2. "Platform"u "Android" olarak değiştirin ve "Platformu Değiştir"i tıklayın
    3. 'Oyuncu Ayarları…' seçeneğini tıklayın
    4. Ana Unity kullanıcı arayüzünde, "Android için Ayarlar" altında "Yayınlama Ayarları"nı seçin
    5. 'Küçült' bölümünün altında, hem Sürüm hem de Hata Ayıklama ayarlarını 'Yok'tan 'ProGuard'a değiştirin
Node.js
  1. Firebase Admin SDK'sını uygulamanıza ekleyin:
    npm install firebase-admin --save
  2. Cloud Firestore'u ortamınızda uygun kimlik bilgileriyle başlatmak için aşağıdaki talimatları izleyin.
Git
  1. Firebase Admin SDK'sını Go uygulamanıza ekleyin:
    go get firebase.google.com/go
    
  2. Cloud Firestore'u ortamınızda uygun kimlik bilgileriyle başlatmak için aşağıdaki talimatları izleyin.
PHP
  1. Cloud Firestore sunucu istemci kitaplıkları (Java, Node.js, Python, Go, PHP, C# ve Ruby), kimlik doğrulama için Google Uygulama Varsayılan Kimlik Bilgilerini kullanır.
    • Geliştirme ortamınızdan kimlik doğrulaması yapmak için GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini bir JSON hizmet hesabı anahtar dosyasına işaret edecek şekilde ayarlayın. API Konsolu Kimlik Bilgileri sayfasında bir anahtar dosyası oluşturabilirsiniz.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • Üretim ortamınızda, uygulamanızı Cloud Firestore için kullandığınız projeyi kullanarak App Engine veya Compute Engine üzerinde çalıştırırsanız kimlik doğrulamanız gerekmez. Aksi takdirde, bir hizmet hesabı oluşturun .
  2. İstemci kitaplığını kullanmanız gerekecek olan PHP için gRPC uzantısını kurun ve etkinleştirin.
  3. Uygulamanıza Cloud Firestore PHP kitaplığını ekleyin: 096e69560
C#
  1. Cloud Firestore sunucu istemci kitaplıkları (Java, Node.js, Python, Go, PHP, C# ve Ruby), kimlik doğrulama için Google Uygulama Varsayılan Kimlik Bilgilerini kullanır.
    • Geliştirme ortamınızdan kimlik doğrulaması yapmak için GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini bir JSON hizmet hesabı anahtar dosyasına işaret edecek şekilde ayarlayın. API Konsolu Kimlik Bilgileri sayfasında bir anahtar dosyası oluşturabilirsiniz.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • Üretim ortamınızda, uygulamanızı Cloud Firestore için kullandığınız projeyi kullanarak App Engine veya Compute Engine üzerinde çalıştırırsanız kimlik doğrulamanız gerekmez. Aksi takdirde, bir hizmet hesabı oluşturun .
  2. .csproj dosyanızdaki uygulamanıza Cloud Firestore C# kitaplığını ekleyin:
    <ItemGroup>
      <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" />
    </ItemGroup>
  3. Aşağıdakileri Program.cs dosyanıza ekleyin:
    using Google.Cloud.Firestore;
yakut
  1. Cloud Firestore sunucu istemci kitaplıkları (Java, Node.js, Python, Go, PHP, C# ve Ruby), kimlik doğrulama için Google Uygulama Varsayılan Kimlik Bilgilerini kullanır.
    • Geliştirme ortamınızdan kimlik doğrulaması yapmak için GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini bir JSON hizmet hesabı anahtar dosyasına işaret edecek şekilde ayarlayın. API Konsolu Kimlik Bilgileri sayfasında bir anahtar dosyası oluşturabilirsiniz.
      export GOOGLE_APPLICATION_CREDENTIALS="path/to/your/keyfile.json"
    • Üretim ortamınızda, uygulamanızı Cloud Firestore için kullandığınız projeyi kullanarak App Engine veya Compute Engine üzerinde çalıştırırsanız kimlik doğrulamanız gerekmez. Aksi takdirde, bir hizmet hesabı oluşturun .
  2. Gemfile :
    gem "google-cloud-firestore"
    'deki uygulamanıza Cloud Firestore Ruby kitaplığını ekleyin
  3. Bağımlılıkları Gemfile yükleyin:
    bundle install

(İsteğe bağlı) Firebase Local Emulator Suite ile prototip oluşturun ve test edin

Mobil geliştiriciler için, uygulamanızın Cloud Firestore'a nasıl yazdığı ve buradan okuduğu hakkında konuşmadan önce, Cloud Firestore işlevselliğini prototiplemek ve test etmek için kullanabileceğiniz bir dizi araç tanıtalım: Firebase Local Emulator Suite. Farklı veri modelleri deniyor, güvenlik kurallarınızı optimize ediyor veya arka uçla etkileşim kurmanın en uygun maliyetli yolunu bulmaya çalışıyorsanız, canlı hizmetleri dağıtmadan yerel olarak çalışabilmek harika bir fikir olabilir.

Cloud Firestore öykünücüsü, uygulamanızın öykünülmüş veritabanı içeriğiniz ve yapılandırmanızın yanı sıra isteğe bağlı olarak öykünülmüş proje kaynaklarınızla (işlevler, diğer veritabanları ve güvenlik kuralları) etkileşim kurmasını sağlayan Yerel Öykünücü Paketi'nin bir parçasıdır.

Cloud Firestore öykünücüsünü kullanmak yalnızca birkaç adımı içerir:

  1. Öykünücüye bağlanmak için uygulamanızın test yapılandırmasına bir kod satırı ekleme.
  2. Yerel proje dizininizin kökünden, firebase emulators:start .
  3. Her zamanki gibi bir Cloud Firestore platform SDK'sını kullanarak uygulamanızın prototip kodundan arama yapma.

Cloud Firestore ve Cloud Functions'ı içeren ayrıntılı bir kılavuz mevcuttur. Ayrıca Local Emulator Suite tanıtımına da göz atmalısınız.

Cloud Firestore'u Başlatın

Cloud Firestore örneğini başlatın:

Web v8

// Initialize Cloud Firestore through Firebase
firebase.initializeApp({
  apiKey: '### FIREBASE API KEY ###',
  authDomain: '### FIREBASE AUTH DOMAIN ###',
  projectId: '### CLOUD FIRESTORE PROJECT ID ###'
});

var db = firebase.firestore();
"initializeApp" için değerler web uygulamanızın "firebaseConfig" içinde bulunabilir . Cihaz bağlantısını kaybettiğinde verileri sürdürmek için Çevrimdışı Verileri Etkinleştir belgelerine bakın.

Web v9

// Initialize Cloud Firestore through Firebase
import { initializeApp } from "firebase/app"
import { getFirestore } from "firebase/firestore"
const firebaseApp = initializeApp({
  apiKey: '### FIREBASE API KEY ###',
  authDomain: '### FIREBASE AUTH DOMAIN ###',
  projectId: '### CLOUD FIRESTORE PROJECT ID ###'
});

const db = getFirestore();
"initializeApp" için değerler web uygulamanızın "firebaseConfig" içinde bulunabilir . Cihaz bağlantısını kaybettiğinde verileri sürdürmek için Çevrimdışı Verileri Etkinleştir belgelerine bakın.
hızlı
import Firebase
FirebaseApp.configure()

let db = Firestore.firestore()
Amaç-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
Cloud Firestore SDK, ortamınıza bağlı olarak farklı şekillerde başlatılır. Aşağıda en yaygın yöntemler bulunmaktadır. Tam bir referans için bkz . Yönetici SDK'sını Başlatma .
  • Google Cloud Platform'da başlat
    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();
    
  • Kendi sunucunuzda başlatın

    Firebase Admin SDK'sını kendi sunucunuzda kullanmak için bir hizmet hesabı kullanın.

    Bulut Platformu Konsolu'nda IAM ve yönetici > Hizmet hesapları'na gidin . Yeni bir özel anahtar oluşturun ve JSON dosyasını kaydedin. Ardından, SDK'yı başlatmak için dosyayı kullanın:

    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();
    
  • piton
    Cloud Firestore SDK, ortamınıza bağlı olarak farklı şekillerde başlatılır. Aşağıda en yaygın yöntemler bulunmaktadır. Tam bir referans için bkz . Yönetici SDK'sını Başlatma .
  • 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()
    
    'ta başlat
  • Kendi sunucunuzda başlatın

    Firebase Admin SDK'sını kendi sunucunuzda kullanmak için bir hizmet hesabı kullanın.

    Bulut Platformu Konsolu'nda IAM ve yönetici > Hizmet hesapları'na gidin . Yeni bir özel anahtar oluşturun ve JSON dosyasını kaydedin. Ardından, SDK'yı başlatmak için dosyayı kullanın:

    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
    Cloud Firestore SDK, ortamınıza bağlı olarak farklı şekillerde başlatılır. Aşağıda en yaygın yöntemler bulunmaktadır. Tam bir referans için bkz . Yönetici SDK'sını Başlatma .
    • Bulut İşlevlerinde Başlat
      const admin = require('firebase-admin');
      admin.initializeApp();
      
      const db = admin.firestore();
      
    • Google Cloud Platform'da başlat
      const admin = require('firebase-admin');
      admin.initializeApp({
        credential: admin.credential.applicationDefault()
      });
      
      const db = admin.firestore();
    • Kendi sunucunuzda başlatın

      Firebase Admin SDK'sını kendi sunucunuzda (veya başka bir Node.js ortamında) kullanmak için bir hizmet hesabı kullanın. Bulut Platformu Konsolu'nda IAM ve yönetici > Hizmet hesapları'na gidin . Yeni bir özel anahtar oluşturun ve JSON dosyasını kaydedin. Ardından, SDK'yı başlatmak için dosyayı kullanın:

      const admin = require('firebase-admin');
      const serviceAccount = require('./path/to/serviceAccountKey.json');
      
      admin.initializeApp({
        credential: admin.credential.cert(serviceAccount)
      });
      
      const db = admin.firestore();
      
    Git
    Cloud Firestore SDK, ortamınıza bağlı olarak farklı şekillerde başlatılır. Aşağıda en yaygın yöntemler bulunmaktadır. Tam bir referans için bkz . Yönetici SDK'sını Başlatma .
  • 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()
    
    'ta başlat
  • Kendi sunucunuzda başlatın

    Firebase Admin SDK'sını kendi sunucunuzda kullanmak için bir hizmet hesabı kullanın.

    Bulut Platformu Konsolu'nda IAM ve yönetici > Hizmet hesapları'na gidin . Yeni bir özel anahtar oluşturun ve JSON dosyasını kaydedin. Ardından, SDK'yı başlatmak için dosyayı kullanın:

    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.
     */
    function setup_client_create()
    {
        // Create the Cloud Firestore client
        $db = new FirestoreClient();
        printf('Created Cloud Firestore client with default project ID.' . PHP_EOL);
    }
    Birlik
    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);
    yakut
    require "google/cloud/firestore"
    
    firestore = Google::Cloud::Firestore.new project_id: project_id
    
    puts "Created Cloud Firestore client with given project ID."

    Veri ekle

    Cloud Firestore, verileri Koleksiyonlar'da depolanan Belgeler'de depolar. Cloud Firestore, belgeye ilk veri eklediğinizde dolaylı olarak koleksiyonlar ve belgeler oluşturur. Açıkça koleksiyonlar veya belgeler oluşturmanız gerekmez.

    Aşağıdaki örnek kodu kullanarak yeni bir koleksiyon ve belge oluşturun.

    Web v8

    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);
    });

    Web v9

    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);
    }
    hızlı
    // 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)")
        }
    }
    Amaç-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());
    piton
    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
    });
    Git
    _, _, 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('samples/php/users')->document('lovelace');
    $docRef->set([
        'first' => 'Ada',
        'last' => 'Lovelace',
        'born' => 1815
    ]);
    printf('Added data to the lovelace document in the users collection.' . PHP_EOL);
    Birlik
    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);
    yakut
    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."

    Şimdi, users koleksiyonuna başka bir belge ekleyin. Bu belgenin, ilk belgede görünmeyen bir anahtar/değer çifti (orta ad) içerdiğine dikkat edin. Bir koleksiyondaki belgeler farklı bilgi kümeleri içerebilir.

    Web v8

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

    Web v9

    // 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);
    }
    hızlı
    // 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)")
        }
    }
    Amaç-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());
    piton
    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
    });
    Git
    _, _, 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('samples/php/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);
    Birlik
    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);
    yakut
    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."

    Verileri oku

    Cloud Firestore'a veri eklediğinizi hızlı bir şekilde doğrulamak için Firebase konsolundaki veri görüntüleyiciyi kullanın.

    Koleksiyonun tamamını almak için "get" yöntemini de kullanabilirsiniz.

    Web v8

    db.collection("users").get().then((querySnapshot) => {
        querySnapshot.forEach((doc) => {
            console.log(`${doc.id} => ${doc.data()}`);
        });
    });

    Web v9

    import { collection, getDocs } from "firebase/firestore"; 
    
    const querySnapshot = await getDocs(collection(db, "users"));
    querySnapshot.forEach((doc) => {
      console.log(`${doc.id} => ${doc.data()}`);
    });
    hızlı
    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())")
            }
        }
    }
    Amaç-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"));
    }
    piton
    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());
    });
    Git
    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('samples/php/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);
    Birlik
    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();
    }
    yakut
    users_ref = firestore.col collection_path
    users_ref.get do |user|
      puts "#{user.document_id} data: #{user.data}."
    end

    Verilerinizi koruyun

    Web, Android veya iOS SDK kullanıyorsanız, Cloud Firestore'da verilerinizin güvenliğini sağlamak için Firebase Authentication ve Cloud Firestore Güvenlik Kurallarını kullanın.

    İşte başlamak için kullanabileceğiniz bazı temel kural kümeleri. Güvenlik kurallarınızı konsolun Kurallar sekmesinde değiştirebilirsiniz.

    Yetkilendirme gerekli

    // 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;
        }
      }
    }
    

    Kilitli mod

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

    Test modu

    // 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;
        }
      }
    }
    

    Sunucu SDK'larından birini kullanıyorsanız Cloud Firestore'daki verilerinizin güvenliğini sağlamak için Kimlik ve Erişim Yönetimi'ni (IAM) kullanın.

    Bir video eğitimi izleyin

    Cloud Firestore mobil ve web istemci kitaplıklarını kullanmaya başlama konusunda ayrıntılı rehberlik için aşağıdaki eğitim videolarından birini izleyin:

    Web v8

    iOS
    Android

    Firebase YouTube kanalında daha fazla video bulabilirsiniz.

    Sonraki adımlar

    Aşağıdaki konularla bilginizi derinleştirin:

    • CodelabsAndroid , iOS veya Web için codelab'i izleyerek Cloud Firestore'u gerçek bir uygulamada kullanmayı öğrenin.
    • Veri modeli — Hiyerarşik veriler ve alt koleksiyonlar dahil olmak üzere verilerin Cloud Firestore'da nasıl yapılandırıldığı hakkında daha fazla bilgi edinin.
    • Veri ekle — Cloud Firestore'da veri oluşturma ve güncelleme hakkında daha fazla bilgi edinin.
    • Veri al — Verilerin nasıl alınacağı hakkında daha fazla bilgi edinin.
    • Basit ve bileşik sorgular gerçekleştirin — Basit ve bileşik sorguları nasıl çalıştıracağınızı öğrenin.
    • Sorguları sıralayın ve sınırlayın Sorgularınız tarafından döndürülen verileri nasıl sıralayacağınızı ve sınırlayacağınızı öğrenin.