Bu hızlı başlangıç kılavuzunda, Cloud Firestore hizmetini nasıl ayarlayacağınız, veri ekleyeceğiniz ve eklediğiniz verileri Firebase konsolunda nasıl görüntüleyeceğiniz açıklanmaktadır.
Cloud Firestore, mobil veya web SDK'larını ve sunucu istemci kitaplıklarını destekler:
Cloud Firestore; Android, iOS, web ve diğer platformlar için SDK'ları destekler. Cloud Firestore Security Rules ve Firebase Authentication ile birleştirildiğinde mobil ve web SDK'ları, istemcilerin doğrudan Cloud Firestore veritabanınıza bağlandığı sunucusuz uygulama mimarilerini destekler.
Cloud Firestore; C#, Go, Java, Node.js, PHP, Python ve Ruby için sunucu istemci kitaplıklarını destekler. Veritabanınıza tam erişim sağlayan ayrıcalıklı sunucu ortamları oluşturmak için bu istemci kitaplıklarını kullanın. Bu kitaplıklar hakkında daha fazla bilgiyi Sunucu istemci kitaplıkları için hızlı başlangıç bölümünde bulabilirsiniz.
Yapay Zeka Desteği için yapay zeka istemi
Yapay zeka desteği için aşağıdaki istemi yapay zeka kodlama temsilcinize (ör. Android Studio'da Gemini, Antigravity, Claude Code, Codex ve Cursor) kopyalayın. İstemi özelleştirebilir ve temsilcinizle birlikte üzerinde çalışabilirsiniz. Ayrıntılı kurulum bilgileri için Firebase aracı becerileri sayfasını ziyaret edin.
Help me use Firebase in my app.
1. Make sure that **Firebase agent skills** are installed and updated. For Claude Code, Codex, or Cursor agents, help me install the Firebase plugin. For other agents, run `npx skills add firebase/agent-skills`. Always try to use **Firebase agent skills** for Firebase-related tasks.
2. Help me set up and use Firebase for the backend of my app. Set up Firestore database in **Standard edition**. Help me to choose the best location for my database instance.
Cloud Firestore veritabanı oluşturma
Henüz yapmadıysanız bir Firebase projesi oluşturun: Firebase konsolunda Proje ekle'yi tıklayın, ardından ekrandaki talimatları uygulayarak bir Firebase projesi oluşturun veya mevcut bir Google Cloud projesine Firebase hizmetlerini ekleyin.
Sol panelde Databases & Storage (Veritabanları ve Depolama Alanı) > Firestore'a gidin.
Create database'i (Veritabanı oluştur) tıklayın.
Veritabanınız için bir konum seçin.
Konum seçemiyorsanız projenizin "varsayılan Google Cloud kaynakları için konum" ayarı zaten yapılmıştır. Projenizin bazı kaynakları (ör. varsayılan Cloud Firestore örneği) ortak bir konum bağımlılığını paylaşır ve konumları, proje oluşturulurken veya bu konum bağımlılığını paylaşan başka bir hizmet ayarlanırken belirlenebilir.
Cloud Firestore Security Rules cihazınız için bir başlangıç modu seçin:
- Test modu
Mobil ve web istemci kitaplıklarını kullanmaya başlamak için idealdir ancak herkesin verilerinizi okumasına ve üzerine yazmasına izin verir. Testten sonra Verilerinizi güvende tutma bölümünü incelediğinizden emin olun.
Web, Apple platformları veya Android SDK'sını kullanmaya başlamak için test modunu seçin.
- Üretim modu
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) veritabanınıza erişmeye devam edebilir.
C#, Go, Java, Node.js, PHP, Python veya Ruby sunucu istemci kitaplığını kullanmaya başlamak için üretim modunu seçin.
İlk Cloud Firestore Security Rules grubunuz varsayılan Cloud Firestore veritabanınıza uygulanır. Projeniz için birden fazla veritabanı oluşturursanız her veritabanı için Cloud Firestore Security Rules dağıtabilirsiniz.
Oluştur'u tıklayın.
Cloud Firestore hizmetini etkinleştirdiğinizde API, Cloud API Manager'da da etkinleştirilir.
Geliştirme ortamınızı ayarlama
Gerekli bağımlılıkları ve istemci kitaplıklarını uygulamanıza ekleyin.
Web
- Firebase'i web uygulamanıza ekleme talimatlarını uygulayın.
-
Cloud Firestore SDK'sı, npm paketi olarak kullanılabilir.
Hem Firebase'i hem de Cloud Firestore'i içe aktarmanız gerekir.npm install firebase@13.0.0 --save
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
Web
- Firebase'i web uygulamanıza ekleme talimatlarını uygulayın.
- Firebase ve Cloud Firestore kitaplıklarını uygulamanıza ekleyin:
Cloud Firestore SDK'sı, npm paketi olarak da kullanılabilir.<script src="https://www.gstatic.com/firebasejs/13.0.0/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/13.0.0/firebase-firestore-compat.js"></script>
Hem Firebase'i hem de Cloud Firestore'yi manuel olarak eklemeniz gerekir.npm install firebase@13.0.0 --save
import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
iOS+
Firebase'i Apple uygulamanıza ekleme talimatlarını uygulayın.
Firebase bağımlılıklarını yüklemek ve yönetmek için Swift Package Manager'ı kullanın.
- Xcode'da uygulama projeniz açıkken File > Swift Packages > Add Package Dependency (Dosya > Swift Paketleri > Paket Bağımlılığı Ekle) bölümüne gidin.
- İstendiğinde Firebase Apple platformları SDK deposunu ekleyin:
- Firestore kitaplığını seçin.
- İşlem tamamlandığında Xcode, arka planda bağımlılıklarınızı otomatik olarak çözmeye ve indirmeye başlar.
https://github.com/firebase/firebase-ios-sdk
Android
- Firebase'i Android uygulamanıza ekleme talimatlarını uygulayın.
- Firebase Android BoM'u kullanarak Android için Cloud Firestore kitaplığına olan bağımlılığı modülünüzün (uygulama düzeyinde) Gradle dosyasında (genellikle
app/build.gradle.ktsveyaapp/build.gradle) tanımlayın.dependencies { // Import the BoM for the Firebase platform implementation(platform("com.google.firebase:firebase-bom:35.0.1")) // 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'u kullandığınızda uygulamanız her zaman Firebase Android kitaplıklarının uyumlu sürümlerini kullanır.
(Alternatif) BoM kullanmadan Firebase kitaplığı bağımlılıklarını bildirin.
Firebase BoM kullanmamayı tercih ederseniz her Firebase kitaplığı sürümünü kendi 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 kullanmanızı önemle tavsiye ederiz. Bu sayede tüm sürümlerin uyumlu olmasını sağlayabilirsiniz.
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:27.0.0") }
Kotlin'e özel bir kitaplık modülü mü arıyorsunuz? Ekim 2023 sürümünden itibaren hem Kotlin hem de Java geliştiricileri ana kitaplık modülüne bağlı olabilir (ayrıntılar için bu girişimle ilgili SSS bölümüne bakın).
Dart
- Henüz yapmadıysanız Flutter uygulamanızda Firebase'i yapılandırıp başlatın.
- Eklentiyi yüklemek için Flutter projenizin kök dizininden aşağıdaki komutu çalıştırın:
flutter pub add cloud_firestore
- İşlem tamamlandıktan sonra Flutter uygulamanızı yeniden derleyin:
flutter run
- İsteğe bağlı: Önceden derlenmiş çerçeveyi ekleyerek iOS ve macOS derleme sürelerini iyileştirin.
Şu anda iOS için Firestore SDK'sı, Xcode'da derlenmesi 5 dakikadan uzun sürebilen koda bağlıdır. Derleme sürelerini önemli ölçüde azaltmak için Podfile'ınızdaki
target 'Runner' dobloğuna bu satırı ekleyerek önceden derlenmiş bir sürüm kullanabilirsiniz:target 'Runner' do use_frameworks! use_modular_headers! pod 'FirebaseFirestore', :git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git', :tag => 'IOS_SDK_VERSION' flutter_install_all_ios_pods File.dirname(File.realpath(__FILE__)) target 'RunnerTests' do inherit! :search_paths end endIOS_SDK_VERSION ifadesini,
firebase_coreuygulamasınınfirebase_sdk_version.rbdosyasında belirtilen Firebase iOS SDK'sı sürümüyle değiştirin.firebase_coreuygulamasının en yeni sürümünü kullanmıyorsanız bu dosyayı yerel Pub paketi önbelleğinizde (genellikle~/.pub-cache) arayın.Ayrıca CocoaPods'u 1.9.1 veya daha yeni bir sürüme yükselttiğinizden emin olun:
gem install cocoapods
Daha fazla bilgi için GitHub'daki sorunu inceleyin.
C++
- Firebase'i C++ projenize ekleme talimatlarını uygulayın.
- Android için C++ arayüzü.
- Gradle bağımlılıkları. Modülünüzün (uygulama düzeyinde) Gradle dosyasına (genellikle
app/build.gradle) aşağıdakileri ekleyin: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ı elde etmek için önerilen yöntem,
CMakeLists.txtdosyanıza aşağıdakileri 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}")
- Masaüstü entegrasyonunu ayarlamak için Firebase'i C++ projenize ekleme başlıklı makaleyi inceleyin.
Unity
- Firebase'i Unity projenize ekleme talimatlarını uygulayın.
- Projenizi Android derlemelerini sadeleştirecek şekilde yapılandırmak için Unity arayüzünü kullanın.
- Bu seçeneği Player Settings > Android > Publishing Settings > Minify (Oynatıcı Ayarları > Android > Yayınlama Ayarları > Sadeleştir) bölümünde bulabilirsiniz.
- Seçenekler Unity'nin farklı sürümlerinde değişiklik gösterebilir. Bu nedenle, resmi Unity belgelerine ve Firebase Unity Derleme Hata Ayıklama Kılavuzu'na bakın.
-
Sadeleştirmeyi etkinleştirdikten sonra referans verilen yöntemlerin sayısı hâlâ sınırı aşıyorsa başka bir seçenek de
multidexiçinde- 'yi etkinleştirmektir:
-
Player Settings (Oyuncu Ayarları) bölümünde Custom Gradle Template (Özel Gradle Şablonu) etkinse
mainTemplate.gradle -
veya dışa aktarılan projeyi derlemek için Android Studio kullanıyorsanız modül düzeyindeki
build.gradledosyası.
-
Player Settings (Oyuncu Ayarları) bölümünde Custom Gradle Template (Özel Gradle Şablonu) etkinse
Error while merging dex archives mesajını görmemek için derlemeyi sadeleştirmeniz gerekir.
(İsteğe bağlı) Firebase Local Emulator Suite ile prototip oluşturma ve test etme
Mobil geliştiriciler için uygulamanızın Cloud Firestore veritabanına nasıl yazma ve okuma yaptığından bahsetmeden önce, Cloud Firestore işlevinin prototipini oluşturmak ve test etmek için kullanabileceğiniz bir dizi araçtan bahsedelim: 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 emülatörü, Local Emulator Suite'nin bir parçasıdır. Bu emülatör, uygulamanızın emülasyonu yapılan veritabanı içeriği ve yapılandırmasının yanı sıra isteğe bağlı olarak emülasyonu yapılan proje kaynaklarınızla (işlevler, diğer veritabanları ve güvenlik kuralları) etkileşim kurmasını sağlar.
Cloud Firestore emülatörünü kullanmak için birkaç adımı uygulamanız yeterlidir:
- Emülatöre bağlanmak için uygulamanızın test yapılandırmasına bir kod satırı ekleme
- Yerel proje dizininizin kökünden
firebase emulators:startkomutunu çalıştırın. - Uygulamanızın prototip kodundan her zamanki gibi bir Cloud Firestore platform SDK'sı kullanarak çağrı yapma.
Cloud Firestore ve Cloud Functions ile ilgili ayrıntılı bir açıklamayı inceleyebilirsiniz. Local Emulator Suite girişine de göz atmanız önerilir.
Cloud Firestore başlatılıyor
Cloud Firestore örneğini başlatın:
Web
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase const app = initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = getFirestore(app);
FIREBASE_CONFIGURATION yerine web uygulamanızın firebaseConfig değerini girin.
Cihazın bağlantısı kesildiğinde verileri korumak için Çevrimdışı Verileri Etkinleştirme belgelerine bakın.
Web
import firebase from "firebase/app"; import "firebase/firestore"; // TODO: Replace the following with your app's Firebase project configuration // See: https://support.google.com/firebase/answer/7015592 const firebaseConfig = { FIREBASE_CONFIGURATION }; // Initialize Firebase firebase.initializeApp(firebaseConfig); // Initialize Cloud Firestore and get a reference to the service const db = firebase.firestore();
FIREBASE_CONFIGURATION yerine web uygulamanızın firebaseConfig değerini girin.
Cihazın bağlantısı kesildiğinde verileri korumak için Çevrimdışı Verileri Etkinleştirme belgelerine bakın.
Swift
import FirebaseCore import FirebaseFirestore
FirebaseApp.configure() let db = Firestore.firestore()
Objective-C
@import FirebaseCore; @import FirebaseFirestore; // Use Firebase library to configure APIs [FIRApp configure];
FIRFirestore *defaultFirestore = [FIRFirestore firestore];
Kotlin
// Access a Cloud Firestore instance from your Activityval db = Firebase.firestore
Java
// Access a Cloud Firestore instance from your ActivityFirebaseFirestore db = FirebaseFirestore.getInstance();
Dart
db = FirebaseFirestore.instance;
C++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance(). App::Create(); Firestore* db = Firestore::GetInstance();
Unity
using Firebase.Firestore; using Firebase.Extensions;
FirebaseFirestore db = FirebaseFirestore.DefaultInstance;
Veri ekle
Cloud Firestore, verileri koleksiyonlarda depolanan dokümanlarda depolar. Cloud Firestore, dokümana ilk kez veri eklediğinizde koleksiyonları ve dokümanları dolaylı olarak oluşturur. Koleksiyonları veya dokümanları açıkça oluşturmanız gerekmez.
Aşağıdaki örnek kodu kullanarak yeni bir koleksiyon ve doküman oluşturun.
Web
import { collection, addDoc } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Ada", last: "Lovelace", born: 1815 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
Web
db.collection("users").add({ first: "Ada", last: "Lovelace", born: 1815 }) .then((docRef) => { console.log("Document written with ID: ", docRef.id); }) .catch((error) => { console.error("Error adding document: ", error); });
Swift
// Add a new document with a generated ID do { let ref = try await db.collection("users").addDocument(data: [ "first": "Ada", "last": "Lovelace", "born": 1815 ]) print("Document added with ID: \(ref.documentID)") } catch { print("Error adding document: \(error)") }
Objective-C
// Add a new document with a generated ID __block FIRDocumentReference *ref = [[self.db collectionWithPath:@"users"] addDocumentWithData:@{ @"first": @"Ada", @"last": @"Lovelace", @"born": @1815 } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error adding document: %@", error); } else { NSLog(@"Document added with ID: %@", ref.documentID); } }];
Kotlin
// Create a new user with a first and last name val user = hashMapOf( "first" to "Ada", "last" to "Lovelace", "born" to 1815, ) // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener { documentReference -> Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}") } .addOnFailureListener { e -> Log.w(TAG, "Error adding document", e) }
Java
// Create a new user with a first and last name Map<String, Object> user = new HashMap<>(); user.put("first", "Ada"); user.put("last", "Lovelace"); user.put("born", 1815); // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId()); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error adding document", e); } });
Dart
// Create a new user with a first and last name final user = <String, dynamic>{ "first": "Ada", "last": "Lovelace", "born": 1815 }; // Add a new document with a generated ID db.collection("users").add(user).then((DocumentReference doc) => print('DocumentSnapshot added with ID: ${doc.id}'));
C++
// Add a new document with a generated ID Future<DocumentReference> user_ref = db->Collection("users").Add({{"first", FieldValue::String("Ada")}, {"last", FieldValue::String("Lovelace")}, {"born", FieldValue::Integer(1815)}}); user_ref.OnCompletion([](const Future<DocumentReference>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot added with ID: " << future.result()->id() << std::endl; } else { std::cout << "Error adding document: " << future.error_message() << std::endl; } });
Unity
DocumentReference docRef = db.Collection("users").Document("alovelace"); Dictionary<string, object> user = new Dictionary<string, object> { { "First", "Ada" }, { "Last", "Lovelace" }, { "Born", 1815 }, }; docRef.SetAsync(user).ContinueWithOnMainThread(task => { Debug.Log("Added data to the alovelace document in the users collection."); });
Şimdi users koleksiyonuna başka bir belge ekleyin. Bu belgede, ilk belgede görünmeyen bir anahtar/değer çifti (ikinci ad) bulunduğuna dikkat edin. Bir koleksiyondaki belgeler farklı bilgi kümeleri içerebilir.
Web
// Add a second document with a generated ID. import { addDoc, collection } from "firebase/firestore"; try { const docRef = await addDoc(collection(db, "users"), { first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }); console.log("Document written with ID: ", docRef.id); } catch (e) { console.error("Error adding document: ", e); }
Web
// Add a second document with a generated ID. db.collection("users").add({ first: "Alan", middle: "Mathison", last: "Turing", born: 1912 }) .then((docRef) => { console.log("Document written with ID: ", docRef.id); }) .catch((error) => { console.error("Error adding document: ", error); });
Swift
// Add a second document with a generated ID. do { let ref = try await db.collection("users").addDocument(data: [ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 ]) print("Document added with ID: \(ref.documentID)") } catch { print("Error adding document: \(error)") }
Objective-C
// Add a second document with a generated ID. __block FIRDocumentReference *ref = [[self.db collectionWithPath:@"users"] addDocumentWithData:@{ @"first": @"Alan", @"middle": @"Mathison", @"last": @"Turing", @"born": @1912 } completion:^(NSError * _Nullable error) { if (error != nil) { NSLog(@"Error adding document: %@", error); } else { NSLog(@"Document added with ID: %@", ref.documentID); } }];
Kotlin
// Create a new user with a first, middle, and last name val user = hashMapOf( "first" to "Alan", "middle" to "Mathison", "last" to "Turing", "born" to 1912, ) // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener { documentReference -> Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}") } .addOnFailureListener { e -> Log.w(TAG, "Error adding document", e) }
Java
// Create a new user with a first, middle, and last name Map<String, Object> user = new HashMap<>(); user.put("first", "Alan"); user.put("middle", "Mathison"); user.put("last", "Turing"); user.put("born", 1912); // Add a new document with a generated ID db.collection("users") .add(user) .addOnSuccessListener(new OnSuccessListener<DocumentReference>() { @Override public void onSuccess(DocumentReference documentReference) { Log.d(TAG, "DocumentSnapshot added with ID: " + documentReference.getId()); } }) .addOnFailureListener(new OnFailureListener() { @Override public void onFailure(@NonNull Exception e) { Log.w(TAG, "Error adding document", e); } });
Dart
// Create a new user with a first and last name final user = <String, dynamic>{ "first": "Alan", "middle": "Mathison", "last": "Turing", "born": 1912 }; // Add a new document with a generated ID db.collection("users").add(user).then((DocumentReference doc) => print('DocumentSnapshot added with ID: ${doc.id}'));
C++
db->Collection("users") .Add({{"first", FieldValue::String("Alan")}, {"middle", FieldValue::String("Mathison")}, {"last", FieldValue::String("Turing")}, {"born", FieldValue::Integer(1912)}}) .OnCompletion([](const Future<DocumentReference>& future) { if (future.error() == Error::kErrorOk) { std::cout << "DocumentSnapshot added with ID: " << future.result()->id() << std::endl; } else { std::cout << "Error adding document: " << future.error_message() << std::endl; } });
Unity
DocumentReference docRef = db.Collection("users").Document("aturing"); Dictionary<string, object> user = new Dictionary<string, object> { { "First", "Alan" }, { "Middle", "Mathison" }, { "Last", "Turing" }, { "Born", 1912 } }; docRef.SetAsync(user).ContinueWithOnMainThread(task => { Debug.Log("Added data to the aturing document in the users collection."); });
Verileri okuma
Cloud Firestore'ye veri eklediğinizi hızlıca 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
import { collection, getDocs } from "firebase/firestore"; const querySnapshot = await getDocs(collection(db, "users")); querySnapshot.forEach((doc) => { console.log(doc.id, "=>", doc.data()); });
Web
db.collection("users").get().then((querySnapshot) => { querySnapshot.forEach((doc) => { console.log(doc.id, "=>", doc.data()); }); });
Swift
do { let snapshot = try await db.collection("users").getDocuments() for document in snapshot.documents { print("\(document.documentID) => \(document.data())") } } catch { print("Error getting documents: \(error)") }
Objective-C
[[self.db collectionWithPath:@"users"] getDocumentsWithCompletion:^(FIRQuerySnapshot * _Nullable snapshot, NSError * _Nullable error) { if (error != nil) { NSLog(@"Error getting documents: %@", error); } else { for (FIRDocumentSnapshot *document in snapshot.documents) { NSLog(@"%@ => %@", document.documentID, document.data); } } }];
Kotlin
db.collection("users") .get() .addOnSuccessListener { result -> for (document in result) { Log.d(TAG, "${document.id} => ${document.data}") } } .addOnFailureListener { exception -> Log.w(TAG, "Error getting documents.", exception) }
Java
db.collection("users") .get() .addOnCompleteListener(new OnCompleteListener<QuerySnapshot>() { @Override public void onComplete(@NonNull Task<QuerySnapshot> task) { if (task.isSuccessful()) { for (QueryDocumentSnapshot document : task.getResult()) { Log.d(TAG, document.getId() + " => " + document.getData()); } } else { Log.w(TAG, "Error getting documents.", task.getException()); } } });
Dart
await db.collection("users").get().then((event) { for (var doc in event.docs) { print("${doc.id} => ${doc.data()}"); } });
C++
Future<QuerySnapshot> users = db->Collection("users").Get(); users.OnCompletion([](const Future<QuerySnapshot>& future) { if (future.error() == Error::kErrorOk) { for (const DocumentSnapshot& document : future.result()->documents()) { std::cout << document << std::endl; } } else { std::cout << "Error getting documents: " << future.error_message() << std::endl; } });
Unity
CollectionReference usersRef = db.Collection("users"); usersRef.GetSnapshotAsync().ContinueWithOnMainThread(task => { QuerySnapshot snapshot = task.Result; foreach (DocumentSnapshot document in snapshot.Documents) { Debug.Log(String.Format("User: {0}", document.Id)); Dictionary<string, object> documentDictionary = document.ToDictionary(); Debug.Log(String.Format("First: {0}", documentDictionary["First"])); if (documentDictionary.ContainsKey("Middle")) { Debug.Log(String.Format("Middle: {0}", documentDictionary["Middle"])); } Debug.Log(String.Format("Last: {0}", documentDictionary["Last"])); Debug.Log(String.Format("Born: {0}", documentDictionary["Born"])); } Debug.Log("Read all data from the users collection."); });
Verilerinizi güvence altına alma
Web, Android veya Apple platformları SDK'sını kullanıyorsanız Cloud Firestore'teki verilerinizin güvenliğini sağlamak için Firebase Authentication ve Cloud Firestore Security Rules'ı kullanın.
Başlangıç için kullanabileceğiniz bazı temel kural kümeleri aşağıda verilmiştir. Güvenlik kurallarınızı Firebase konsolunda Veritabanları ve Depolama Alanı > Firestore > Kurallar sekmesinden değiştirebilirsiniz.
Kimlik doğrulama gerekli
// Allow read/write access to a document keyed by the user's UID
service cloud.firestore {
match /databases/{database}/documents {
match /users/{uid} {
allow read, write: if request.auth != null && request.auth.uid == uid;
}
}
}
Üretim modu
// Deny read/write access to all users under any conditions
service cloud.firestore {
match /databases/{database}/documents {
match /{document=**} {
allow read, write: if false;
}
}
}
Web, Android veya iOS uygulamanızı üretim ortamına dağıtmadan önce, yalnızca uygulama istemcilerinizin Cloud Firestore verilerinize erişebildiğinden emin olmak için gerekli adımları uygulayın. Uygulama Kontrolü belgelerine bakın.
Sunucu SDK'larından birini kullanıyorsanız Cloud Firestore uygulamasındaki verilerinizin güvenliğini sağlamak için Identity and Access Management (IAM) kullanın.
Eğitim videosunu izleyin
Cloud Firestore mobil uygulama istemcisi kitaplıklarını kullanmaya başlama hakkında ayrıntılı bilgi için aşağıdaki eğitim videolarından birini izleyin:
Web
iOS+
Android
Firebase YouTube kanalında daha fazla video bulabilirsiniz.
Sonraki adımlar
Aşağıdaki konularla bilginizi derinleştirin:
- Codelab'ler: Android, iOS veya web için codelab'i takip ederek Cloud Firestore aracını gerçek bir uygulamada kullanmayı öğrenin.
- Veri modeli: Hiyerarşik veriler ve alt koleksiyonlar dahil olmak üzere verilerin Cloud Firestore içinde nasıl yapılandırıldığı hakkında daha fazla bilgi edinin.
- Veri ekleme: Cloud Firestore içinde veri oluşturma ve güncelleme hakkında daha fazla bilgi edinin.
- Veri alma: Verileri nasıl alacağınız hakkında daha fazla bilgi edinin.
- Basit ve bileşik sorgular gerçekleştirme: Basit ve bileşik sorguları nasıl çalıştıracağınızı öğrenin.
- Sorguları sıralama ve sınırlama Sorgularınızın döndürdüğü verileri nasıl sıralayacağınızı ve sınırlayacağınızı öğrenin.
- Firebase aracı becerileri: Görevleri daha etkili bir şekilde yürütmek ve Cloud Firestore ile ilgili en iyi uygulamalardan (ör. Cloud Firestore Security Rules yazma) yararlanmak için yapay zeka geliştirme araçlarınızı nasıl geliştireceğinizi öğrenin.