Google 致力于为黑人社区推动种族平等。查看具体举措
此页面由 Cloud Translation API 翻译。
Switch to English

Cloud Firestore ile başlayın

Bu hızlı başlangıç, size Cloud Firestore'u nasıl kuracağınızı, veri ekleyeceğinizi ve ardından Firebase konsoluna eklediğiniz verileri 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ı uygulayın.

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

  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 izin verir. Test ettikten sonra, Verilerinizin güvenliğini sağlayı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, projenizde özellikle varsayılan Cloud Storage paketiniz ve App Engine uygulamanız (Cloud Scheduler kullanıyorsanız gereklidir) olmak üzere bir konum ayarı gerektiren GCP hizmetleri için kullanılacağını unutmayın.

    • Konum seçemiyorsanız, projenizde zaten varsayılan bir GCP kaynak konumu vardır. Ya proje oluşturulurken 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.

  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/7.24.0/firebase-app.js"></script>
    <script src="https://www.gstatic.com/firebasejs/7.24.0/firebase-firestore.js"></script>
    Cloud Firestore SDK, bir npm paketi olarak da mevcuttur.
    npm install firebase@7.24.0 --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");
    
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. Android uygulamanıza Firebase eklemek için talimatları izleyin.
  2. Proje düzeyindeki build.gradle dosyanızda, hem buildscript hem de allprojects bölümlerinize Google'ın Maven deposunu dahil ettiğinizden emin olun.
  3. Firebase Android BoM'yi kullanarak, modülünüzde (uygulama düzeyinde) Gradle dosyanızda (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:25.12.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 kullandığınızda , 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 BoM'yi kullanmamayı seçerseniz, bağımlılık satırında her Firebase kitaplık sürümünü belirtmeniz gerekir.

    Uygulamanızda birden fazla Firebase kitaplığı kullanırsanız, kitaplık sürümlerini yönetmek için BoM'yi kullanmanızı önemle tavsiye ettiğimizi unutmayın; bu, 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:21.7.1'
    }
    

Kotlin + KTX

  1. Android uygulamanıza Firebase eklemek için talimatları izleyin.
  2. Proje düzeyindeki build.gradle dosyanızda, hem buildscript hem de allprojects bölümlerinize Google'ın Maven deposunu dahil ettiğinizden emin olun.
  3. Firebase Android BoM'yi kullanarak, modülünüzde (uygulama düzeyinde) Gradle dosyasında (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:25.12.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 kullandığınızda , 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 BoM'yi kullanmamayı seçerseniz, bağımlılık satırında her Firebase kitaplık sürümünü belirtmeniz gerekir.

    Uygulamanızda birden çok Firebase kitaplığı kullanırsanız, kitaplık sürümlerini yönetmek için BoM'yi kullanmanızı önemle tavsiye ettiğimizi unutmayın; bu, 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:21.7.1'
    }
    
Java
  1. Firebase Admin SDK'sını uygulamanıza ekleyin:
    • Gradle Kullanımı:
      compile 'com.google.firebase:firebase-admin:7.0.1'
      
    • Maven'i kullanma:
      <dependency>
        <groupId>com.google.firebase</groupId>
        <artifactId>firebase-admin</artifactId>
        <version>7.0.1</version>
      </dependency>
           
  2. Cloud Firestore'u ortamınızda uygun kimlik bilgileriyle başlatmak için aşağıdaki talimatları izleyin.
Python
  1. Firebase Admin SDK'yı 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ı uygulayın.
  2. Android için C ++ arayüzü.
    • Gradle bağımlılıkları. Aşağıdakileri modül (uygulama düzeyi) Gradle dosyanıza 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ı edinmenin ö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 Firebase'i C ++ projenize ekleme bölümüne bakın.
Birlik
  1. Firebase'i Unity projenize eklemek için talimatları izleyin.
  2. Android için Unity arayüzü.
  3. Android için derlerken, Android DEX sınırından kaçınmak için ProGuarding'i etkinleştirin. Bunu yapmak için Unity editöründe:

    1. Dosya> Derleme Ayarları'nı seçin
    2. "Platform" u "Android" olarak değiştirin ve "Platform Değiştir" i tıklayın
    3. "Oyuncu Ayarları…" nı tıklayın
    4. Ana Unity kullanıcı arayüzünde, 'Android Ayarları' altında, 'Yayın Ayarları'nı seçin
    5. 'Küçült' bölümünün altında, Yayın ve 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 Uygulaması Varsayılan Kimlik Bilgilerini kullanır.
    • Geliştirme ortamınızdan kimlik doğrulaması yapmak için GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini JSON hizmet hesabı anahtar dosyasını 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ı App Engine veya Compute Engine üzerinde çalıştırıyorsanız, Cloud Firestore için kullandığınız projeyi kullanarak kimlik doğrulaması yapmanı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. Cloud Firestore PHP kitaplığını uygulamanıza ekleyin:
    composer require google/cloud-firestore
C #
  1. Cloud Firestore sunucu istemci kitaplıkları (Java, Node.js, Python, Go, PHP, C # ve Ruby), kimlik doğrulama için Google Uygulaması Varsayılan Kimlik Bilgilerini kullanır.
    • Geliştirme ortamınızdan kimlik doğrulaması yapmak için, GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini JSON hizmet hesabı anahtar dosyasını 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ı App Engine veya Compute Engine üzerinde çalıştırıyorsanız, Cloud Firestore için kullandığınız projeyi kullanarak kimlik doğrulaması yapmanız gerekmez. Aksi takdirde, bir hizmet hesabı oluşturun .
  2. Cloud Firestore C # kitaplığını .csproj dosyanızda uygulamanıza ekleyin:
    <ItemGroup>
      <PackageReference Include="Google.Cloud.Firestore" Version="1.1.0-beta01" />
    </ItemGroup>
  3. Program.cs dosyanıza aşağıdakileri 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 Uygulaması Varsayılan Kimlik Bilgilerini kullanır.
    • Geliştirme ortamınızdan kimlik doğrulaması yapmak için GOOGLE_APPLICATION_CREDENTIALS ortam değişkenini JSON hizmet hesabı anahtar dosyasını 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ı App Engine veya Compute Engine üzerinde çalıştırıyorsanız, Cloud Firestore için kullandığınız projeyi kullanarak kimlik doğrulaması yapmanız gerekmez. Aksi takdirde, bir hizmet hesabı oluşturun .
  2. Cloud Firestore Ruby kitaplığını Gemfile uygulamanıza Gemfile :
    gem "google-cloud-firestore"
  3. Gemfile kullanarak Gemfile bağımlılıkları yükleyin:
    bundle install

Cloud Firestore'u başlatın

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

// 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` değerleri web uygulamanızın "firebaseConfig` bölümünde bulunabilir . Cihaz bağlantısını kaybettiğinde verileri korumak için Çevrimdışı Verileri Etkinleştirme belgelerine bakın.
Swift
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. En yaygın yöntemler aşağıdadır. Tam bir referans için bkz . Yönetici SDK'sını Başlatma .
  • 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();
    
    'te başlatın
  • Kendi sunucunuzda başlatın

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

    Cloud Platform Console'da 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();
    
  • Python
    Cloud Firestore SDK, ortamınıza bağlı olarak farklı şekillerde başlatılır. En yaygın yöntemler aşağıdadı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()
    
    'de başlatın
  • Kendi sunucunuzda başlatın

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

    Cloud Platform Console'da 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. En yaygın yöntemler aşağıdadır. Tam bir referans için bkz . Yönetici SDK'sını Başlatma .
    • Cloud Functions
      const admin = require('firebase-admin');
      admin.initializeApp();
      
      const db = admin.firestore();
      
      
      'de başlatın
    • Google Cloud Platform
      const admin = require('firebase-admin');
      
      admin.initializeApp({
        credential: admin.credential.applicationDefault()
      });
      
      const db = admin.firestore();
      
      'de başlatın
    • Kendi sunucunuzda başlatın

      Firebase Admin SDK'yı kendi sunucunuzda (veya başka herhangi bir Node.js ortamında) kullanmak için bir hizmet hesabı kullanın. Cloud Platform Console'da 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. En yaygın yöntemler aşağıdadı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()
    
    'te başlatın
  • Kendi sunucunuzda başlatın

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

    Cloud Platform Console'da 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.
     * ```
     * initialize();
     * ```
     */
    function initialize()
    {
        // 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 Koleksiyonlarda depolanan Belgeler'de depolar. Cloud Firestore, belgeye ilk kez veri eklediğinizde örtülü olarak koleksiyonlar ve belgeler oluşturur. Açıkça koleksiyon veya belge oluşturmanız gerekmez.

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

    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)")
        }
    }
    
    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());
      
    Python
    doc_ref = db.collection(u'users').document(u'alovelace')
    doc_ref.set({
        u'first': u'Ada',
        u'last': u'Lovelace',
        u'born': 1815
    })
      
    C ++
    // Add a new document with a generated ID
    Future<DocumentReference> user_ref =
        db->Collection("users").Add({{"first", FieldValue::String("Ada")},
                                     {"last", FieldValue::String("Lovelace")},
                                     {"born", FieldValue::Integer(1815)}});
    
    user_ref.OnCompletion([](const Future<DocumentReference>& future) {
      if (future.error() == Error::kErrorOk) {
        std::cout << "DocumentSnapshot added with ID: " << future.result()->id()
                  << '\n';
      } else {
        std::cout << "Error adding document: " << future.error_message() << '\n';
      }
    });
      
    Node.js
    const docRef = db.collection('users').doc('alovelace');
    
    await docRef.set({
      first: 'Ada',
      last: 'Lovelace',
      born: 1815
    });
      
    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('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 (ikinci ad) içerdiğine dikkat edin. Bir koleksiyondaki belgeler farklı bilgi kümeleri içerebilir.

    // 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)")
        }
    }
    
    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());
      
    Python
    doc_ref = db.collection(u'users').document(u'aturing')
    doc_ref.set({
        u'first': u'Alan',
        u'middle': u'Mathison',
        u'last': u'Turing',
        u'born': 1912
    })
      
    C ++
    db->Collection("users")
        .Add({{"first", FieldValue::String("Alan")},
              {"middle", FieldValue::String("Mathison")},
              {"last", FieldValue::String("Turing")},
              {"born", FieldValue::Integer(1912)}})
        .OnCompletion([](const Future<DocumentReference>& future) {
          if (future.error() == Error::kErrorOk) {
            std::cout << "DocumentSnapshot added with ID: "
                      << future.result()->id() << '\n';
          } else {
            std::cout << "Error adding document: " << future.error_message()
                      << '\n';
          }
        });
      
    Node.js
    const aTuringRef = db.collection('users').doc('aturing');
    
    await aTuringRef.set({
      'first': 'Alan',
      'middle': 'Mathison',
      'last': 'Turing',
      'born': 1912
    });
      
    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('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.

    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())")
            }
        }
    }
    
    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"));
    }
      
    Python
    users_ref = db.collection(u'users')
    docs = users_ref.stream()
    
    for doc in docs:
        print(f'{doc.id} => {doc.to_dict()}')
      
    C ++
    Future<QuerySnapshot> users = db->Collection("users").Get();
    users.OnCompletion([](const Future<QuerySnapshot>& future) {
      if (future.error() == Error::kErrorOk) {
        for (const DocumentSnapshot& document : future.result()->documents()) {
          std::cout << document << '\n';
        }
      } else {
        std::cout << "Error getting documents: " << future.error_message()
                  << '\n';
      }
    });
      
    Node.js
    const snapshot = await db.collection('users').get();
    snapshot.forEach((doc) => {
      console.log(doc.id, '=>', doc.data());
    });
      
    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('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
      

    Verilerinizin güvenliğini sağlayın

    Web, Android veya iOS SDK kullanıyorsanız verilerinizi Cloud Firestore'da korumak için Firebase Authentication ve Cloud Firestore Güvenlik Kurallarını kullanın.

    Başlamak için kullanabileceğiniz bazı temel kural kümeleri aşağıda verilmiştir. Güvenlik kurallarınızı konsolun Kurallar sekmesinden 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'da verilerinizin güvenliğini sağlamak için Kimlik ve Erişim Yönetimi'ni (IAM) kullanın.

    Eğitim videosunu 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:

    iOS
    Android

    Firebase YouTube kanalında daha fazla video bulabilirsiniz.

    Sonraki adımlar

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

    • Codelabs - Android , iOS veya Web için kod laboratuvarını takip ederek Cloud Firestore'u gerçek bir uygulamada kullanmayı öğrenin.
    • Veri modeli - Hiyerarşik veriler ve alt toplamalar dahil olmak üzere Cloud Firestore'da verilerin nasıl yapılandırıldığı hakkında daha fazla bilgi edinin.
    • Veri ekleyin - Cloud Firestore'da veri oluşturma ve güncelleme hakkında daha fazla bilgi edinin.
    • Veri alın - 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ıralama ve sınırlama Sorgularınız tarafından döndürülen verileri nasıl sıralayacağınızı ve sınırlayacağınızı öğrenin.