شروع به کار با نسخه Firestore Standard

این شروع سریع به شما نشان می‌دهد که چگونه Cloud Firestore را راه‌اندازی کنید، داده اضافه کنید، و سپس داده‌هایی را که به‌تازگی اضافه کرده‌اید در کنسول Firebase مشاهده کنید.

Cloud Firestore از کیت‌های توسعه نرم‌افزار وب یا تلفن همراه و کتابخانه‌های کارخواه سرور پشتیبانی می‌کند:

  • ‫Cloud Firestore از کیت‌های توسعه نرم‌افزار برای Android،‏ iOS، و وب و غیره پشتیبانی می‌کند. کیت‌های توسعه نرم‌افزار وب و تلفن همراه در ترکیب با Cloud Firestore Security Rules و Firebase Authentication از معماری‌های برنامه بدون سرور پشتیبانی می‌کنند که در آن مشتریان مستقیماً به پایگاه داده Cloud Firestore شما متصل می‌شوند.

  • Cloud Firestore از کتابخانه‌های کارخواه سرور برای C#‎،‏ Go،‏ Java،‏ Node.js،‏ PHP،‏ Python، و Ruby پشتیبانی می‌کند. از این کتابخانه‌های مشتری برای راه‌اندازی محیط‌های سرور ممتاز با دسترسی کامل به پایگاه داده‌تان استفاده کنید. درباره این کتابخانه‌ها در شروع سریع برای کتابخانه‌های کارخواه سرور بیشتر بدانید.

برای کمک هوش مصنوعی، پیام‌واره زیر را در عامل کدنویسی هوش مصنوعی خود (مانند Gemini در Android Studio،‏ Antigravity،‏ Claude Code،‏ Codex، و Cursor) کپی کنید. می‌توانید پیام‌واره را سفارشی‌سازی کنید و با نماینده‌تان تکرار کنید. برای اطلاعات دقیق نصب، به مهارت‌های عامل Firebase مراجعه کنید.

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

  1. اگر قبلاً این کار را نکرده‌اید، پروژه Firebase ایجاد کنید: در کنسول Firebase، روی افزودن پروژه کلیک کنید، سپس دستورالعمل‌های روی صفحه را دنبال کنید تا پروژه Firebase ایجاد کنید یا سرویس‌های Firebase را به پروژه Google Cloud موجود اضافه کنید.

  2. در پانل سمت راست، به پایگاه‌های داده و فضای ذخیره‌سازی > Firestore بروید.

  3. روی ایجاد پایگاه داده کلیک کنید.

  4. مکانی برای پایگاه داده‌تان انتخاب کنید.

    اگر نمی‌توانید مکانی را انتخاب کنید، «مکان منابع پیش‌فرض Google Cloud» پروژه‌تان قبلاً تنظیم شده است. برخی‌از منابع پروژه شما (مثل نمونه پیش‌فرض Cloud Firestore) وابستگی مکانی مشترکی دارند، و مکان آن‌ها را می‌توان درطول ایجاد پروژه یا هنگام راه‌اندازی سرویس دیگری که این وابستگی مکانی را دارد تنظیم کرد.

  5. حالت شروع را برای Cloud Firestore Security Rules انتخاب کنید:

    حالت آزمایشی

    برای شروع کار با کتابخانه‌های کارخواه وب و تلفن همراه مناسب است، اما به همه اجازه می‌دهد داده‌هایتان را بخوانند و بازنویسی کنند. پس‌از آزمایش، حتماً بخش ایمن‌سازی داده‌ها را مرور کنید.

    برای شروع کار با وب، پلاتفرم‌های Apple، یا کیت توسعه نرم‌افزار Android، حالت آزمایش را انتخاب کنید.

    حالت تولید

    همه خواندن‌ها و نوشتن‌ها را از کلاینت‌های وب و تلفن همراه رد می‌کند. سرورهای برنامه اصالت‌سنجی‌شده شما (C#‎،‏ Go،‏ Java،‏ Node.js،‏ PHP،‏ Python، یا Ruby) همچنان می‌توانند به پایگاه داده شما دسترسی داشته باشند.

    برای شروع کار با کتابخانه کارخواه سرور C#‎،‏ Go،‏ Java،‏ Node.js،‏ PHP،‏ Python، یا Ruby، حالت تولید را انتخاب کنید.

    مجموعه اولیه Cloud Firestore Security Rules برای پایگاه داده پیش‌فرض Cloud Firestore شما اعمال خواهد شد. اگر چندین پایگاه داده برای پروژه‌تان ایجاد کنید، می‌توانید برای هر پایگاه داده Cloud Firestore Security Rules مستقر کنید.

  6. روی ایجاد کردن کلیک کنید.

وقتی Cloud Firestore را فعال می‌کنید، میانای برنامه‌سازی کاربردی نیز در مدیر میانای برنامه‌سازی کاربردی Cloud فعال می‌شود.

راه‌اندازی محیط توسعه نرم‌افزار

وابستگی‌های لازم و کتابخانه‌های مشتری را به برنامه‌تان اضافه کنید.

Web

  1. دستورالعمل‌ها را برای افزودن Firebase به برنامه وب دنبال کنید.
  2. کیت توسعه نرم‌افزار Cloud Firestore به‌عنوان بسته npm دردسترس است.
    npm install firebase@13.0.0 --save
    باید هم Firebase و هم Cloud Firestore را وارد کنید.
    import { initializeApp } from "firebase/app";
    import { getFirestore } from "firebase/firestore";

Web

  1. دستورالعمل‌ها را برای افزودن Firebase به برنامه وب دنبال کنید.
  2. افزودن کتابخانه‌های Firebase و Cloud Firestore به برنامه:
    <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>
    کیت توسعه نرم‌افزار Cloud Firestore به‌عنوان بسته npm نیز دردسترس است.
    npm install firebase@13.0.0 --save
    باید Firebase و Cloud Firestore را به‌صورت دستی الزامی کنید.
    import firebase from "firebase/compat/app";
    // Required for side-effects
    import "firebase/firestore";
iOS+‎

دستورالعمل‌های افزودن Firebase به برنامه Apple را دنبال کنید.

از Swift Package Manager برای نصب و مدیریت وابستگی‌های Firebase استفاده کنید.

  1. در Xcode، درحالی‌که پروژه برنامه‌تان باز است، به File > Swift Packages > Add Package Dependency بروید.
  2. وقتی خواسته شد، مخزن کیت توسعه نرم‌افزار Firebase برای پلاتفرم‌های Apple را اضافه کنید:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. کتابخانه Firestore را انتخاب کنید.
  5. پس‌از اتمام، Xcode به‌طور خودکار شروع به حل و بارگیری وابستگی‌های شما در پس‌زمینه می‌کند.
Android
  1. دستورالعمل‌های افزودن Firebase به برنامه Android را دنبال کنید.
  2. بااستفاده از Firebase Android BoM، وابستگی کتابخانه Cloud Firestore برای Android را در فایل Gradle (سطح برنامه) واحدتان (معمولاً app/build.gradle.kts یا app/build.gradle) اعلام کنید.
    dependencies {
        // Import the BoM for the Firebase platform
        implementation(platform("com.google.firebase:firebase-bom:35.0.2"))
    
        // 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، برنامه شما همیشه از نسخه‌های سازگار کتابخانه‌های Firebase Android استفاده خواهد کرد.

    (جایگزین) وابستگی‌های کتابخانه Firebase را بدون استفاده از BoM اعلام کنید

    اگر انتخاب کنید که از Firebase BoM استفاده نکنید، باید هر نسخه کتابخانه Firebase را در خط وابستگی آن مشخص کنید.

    توجه داشته باشید که اگر از چند کتابخانه Firebase در برنامه‌تان استفاده می‌کنید، اکیداً توصیه می‌کنیم از BoM برای مدیریت نسخه‌های کتابخانه استفاده کنید تا مطمئن شوید همه نسخه‌ها سازگار هستند.

    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.1")
    }

    به‌دنبال ماژول کتابخانه مختص Kotlin هستید؟ از نسخه اکتبر ۲۰۲۳، توسعه‌دهندگان Kotlin و Java می‌توانند به ماژول کتابخانه اصلی وابسته باشند (برای جزئیات، به پرسشگان مربوط به این طرح مراجعه کنید).

Dart

  1. اگر قبلاً این کار را نکرده‌اید، Firebase را در برنامه Flutter خود پیکربندی و مقداردهی اولیه کنید.
  2. از ریشه پروژه Flutter، فرمان زیر را برای نصب افزایه اجرا کنید:
    flutter pub add cloud_firestore
  3. پس‌از تکمیل، برنامه Flutter خود را بازسازی کنید:
    flutter run
  4. اختیاری: با گنجاندن چارچوب پیش‌کامپایل‌شده، زمان‌های ساخت iOS و macOS را بهبود دهید.

    درحال‌حاضر، کیت توسعه نرم‌افزار Firestore برای iOS به کدی وابسته است که ساخت آن در Xcode می‌تواند بیش‌از ۵ دقیقه طول بکشد. برای کاهش قابل‌توجه زمان ساخت، می‌توانید با افزودن این خط به بلوک target 'Runner' do در Podfile خود، از نسخه پیش‌کامپایل‌شده استفاده کنید:

    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
    end

    ‫IOS_SDK_VERSION را با نسخه Firebase iOS SDK مشخص‌شده در فایل firebase_sdk_version.rb firebase_core جایگزین کنید. اگر از جدیدترین نسخه firebase_core استفاده نمی‌کنید، این فایل را در حافظه نهان بسته Pub محلی‌تان (معمولاً ~/.pub-cache) جستجو کنید.

    علاوه‌براین، مطمئن شوید CocoaPods را به نسخه ۱.۹.۱ یا بالاتر ارتقا داده‌اید:

    gem install cocoapods

    برای اطلاعات بیشتر، مشکل در GitHub را ببینید.

C++‎
  1. دستورالعمل‌های افزودن Firebase به پروژه C++‎ را دنبال کنید.
  2. میانای C++‎ برای Android.
    • وابستگی‌های Gradle. موارد زیر را به فایل Gradle (معمولاً 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
              }
              
    • وابستگی‌های دودویی. به‌طور مشابه، روش توصیه‌شده برای دریافت وابستگی‌های دودویی این است که موارد زیر را به فایل CMakeLists.txt خود اضافه کنید:
              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. برای راه‌اندازی ادغام رایانه، افزودن Firebase به پروژه C++‎ را ببینید.
Unity
  1. دستورالعمل‌های افزودن Firebase به پروژه Unity را دنبال کنید.
  2. از میانای Unity برای پیکربندی پروژه‌تان برای کوچک‌سازی ساخت‌های Android استفاده کنید.
  3. برای جلوگیری از پیام Error while merging dex archives، باید ساخت را کوچک کنید.

    • این گزینه را می‌توانید در تنظیمات پخش‌کننده > Android > تنظیمات انتشار > کوچک کردن پیدا کنید.
    • گزینه‌ها ممکن است در نسخه‌های مختلف Unity متفاوت باشد، بنابراین به اسناد رسمی Unity و راهنمای اشکال‌زدایی ساخت Firebase Unity مراجعه کنید.
    • اگر پس‌از فعال کردن کوچک‌سازی، تعداد روش‌های ارجاع‌شده همچنان از حد مجاز فراتر می‌رود، گزینه دیگر فعال کردن multidex در:
        است.
      • mainTemplate.gradle اگر الگوی Gradle سفارشی در تنظیمات پخش‌کننده فعال باشد
      • یا فایل build.gradle در سطح ماژول، اگر از «استودیو Android» برای ساختن پروژه صادرشده استفاده می‌کنید.

(اختیاری) نمونه‌سازی و آزمایش با Firebase Local Emulator Suite

برای توسعه‌دهندگان تلفن همراه، قبل‌از صحبت درباره نحوه نوشتن و خواندن برنامه‌تان از Cloud Firestore، بیایید مجموعه‌ای از ابزارها را معرفی کنیم که می‌توانید برای نمونه‌سازی و آزمایش عملکرد Cloud Firestore استفاده کنید: Firebase Local Emulator Suite. اگر درحال امتحان کردن مدل‌های داده مختلف، بهینه‌سازی قوانین امنیتی، یا تلاش برای یافتن مقرون‌به‌صرفه‌ترین روش برای تعامل با پس‌بک هستید، توانایی کار کردن به‌صورت محلی بدون استقرار خدمات زنده می‌تواند ایده بسیار خوبی باشد.

شبیه‌ساز Cloud Firestore بخشی از Local Emulator Suite است که به برنامه شما امکان می‌دهد با محتوا و پیکربندی پایگاه داده شبیه‌سازی‌شده شما، و همچنین به‌صورت اختیاری با منابع پروژه شبیه‌سازی‌شده شما (توابع، پایگاه‌های داده دیگر، و قوانین امنیتی) تعامل داشته باشد.

استفاده از شبیه‌ساز Cloud Firestore فقط چند مرحله دارد:

  1. افزودن یک خط کد به پیکربندی آزمایشی برنامه‌تان برای اتصال به شبیه‌ساز.
  2. از ریشه دایرکتوری پروژه محلی شما، درحال اجرای firebase emulators:start.
  3. برقراری تماس از کد نمونه اولیه برنامه‌تان بااستفاده از کیت توسعه نرم‌افزار پلاتفرم Cloud Firestore طبق معمول.

راهنمای گام‌به‌گام دقیقی شامل Cloud Firestore و Cloud Functions دردسترس است. همچنین باید نگاهی به Local Emulator Suite مقدمه بیندازید.

مقداردهی اولیه Cloud Firestore

نمونه‌ای از Cloud Firestore را مقداردهی اولیه کنید:

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 را با firebaseConfig برنامه وب خود جایگزین کنید.

برای حفظ داده‌ها درصورت قطع اتصال دستگاه، به سند فعال کردن داده‌های آفلاین مراجعه کنید.

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 را با firebaseConfig برنامه وب خود جایگزین کنید.

برای حفظ داده‌ها درصورت قطع اتصال دستگاه، به سند فعال کردن داده‌های آفلاین مراجعه کنید.

Swift
توجه: این محصول در watchOS و App Clip دردسترس نیست.
import FirebaseCore
import FirebaseFirestore
FirebaseApp.configure()

let db = Firestore.firestore()
آبجکتیو-سی
توجه: این محصول در watchOS و App Clip دردسترس نیست.
@import FirebaseCore;
@import FirebaseFirestore;

// Use Firebase library to configure APIs
[FIRApp configure];
  
FIRFirestore *defaultFirestore = [FIRFirestore firestore];

Kotlin

// Access a Cloud Firestore instance from your Activity
val db = Firebase.firestore

Java

// Access a Cloud Firestore instance from your Activity
FirebaseFirestore 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;

افزودن داده‌ها

Cloud Firestore داده‌ها را در «اسناد» ذخیره می‌کند که در «مجموعه‌ها» ذخیره می‌شوند. Cloud Firestore مجموعه‌ها و اسناد را به‌طور ضمنی در اولین باری که داده‌ها را به سند اضافه می‌کنید ایجاد می‌کند. نیازی نیست مجموعه‌ها یا اسناد را به‌طور صریح ایجاد کنید.

بااستفاده از کد نمونه زیر، مجموعه و سند جدیدی ایجاد کنید.

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
توجه: این محصول در watchOS و App Clip دردسترس نیست.
// 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
توجه: این محصول در watchOS و App Clip دردسترس نیست.
// 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.");
});

اکنون سند دیگری به مجموعه users اضافه کنید. توجه داشته باشید که این سند شامل یک جفت کلید-مقدار (نام میانی) است که در سند اول ظاهر نمی‌شود. اسناد موجود در مجموعه می‌توانند حاوی مجموعه‌های مختلفی از اطلاعات باشند.

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
توجه: این محصول در watchOS و App Clip دردسترس نیست.
// 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
توجه: این محصول در watchOS و App Clip دردسترس نیست.
// 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.");
});

داده‌ها خوانده شد

از نمایشگر داده در کنسول Firebase استفاده کنید تا به‌سرعت تأیید کنید که داده‌ها را به Cloud Firestore اضافه کرده‌اید.

همچنین می‌توانید از روش «get» برای بازیابی کل مجموعه استفاده کنید.

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
توجه: این محصول در watchOS و App Clip دردسترس نیست.
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
توجه: این محصول در watchOS و App Clip دردسترس نیست.
[[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.");
});

داده‌هایتان را ایمن کنید

اگر از کیت توسعه نرم‌افزار پلاتفرم‌های وب، Android، یا Apple استفاده می‌کنید، از اصالت‌سنجی Firebase و Cloud Firestore Security Rules برای ایمن کردن داده‌هایتان در Cloud Firestore استفاده کنید.

در اینجا چند مجموعه قانون پایه آورده شده است که می‌توانید برای شروع از آن‌ها استفاده کنید. می‌توانید قوانین امنیتی‌تان را از کنسول Firebase در برگه پایگاه‌های داده و فضای ذخیره‌سازی > Firestore > قوانین اصلاح کنید.

احراز هویت لازم است

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

حالت تولید

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

قبل‌از اینکه برنامه وب، Android، یا iOS خود را در کانال تولید مستقر کنید، اقداماتی نیز انجام دهید تا مطمئن شوید فقط کارخواه‌های برنامه شما می‌توانند به داده‌های Cloud Firestore شما دسترسی داشته باشند. سند بررسی برنامه را ببینید.

اگر از یکی از کیت‌های توسعه نرم‌افزار سرور استفاده می‌کنید، از مدیریت هویت و دسترسی‌ها (IAM) برای ایمن کردن داده‌هایتان در Cloud Firestore استفاده کنید.

تماشای آموزش ویدیویی

برای راهنمایی دقیق درباره شروع کار با کتابخانه‌های کارخواه تلفن همراه Cloud Firestore، یکی از آموزش‌های ویدیویی زیر را تماشا کنید:

وب
iOS+‎
Android

می‌توانید ویدیوهای بیشتری را در کانال YouTube Firebase پیدا کنید.

مراحل بعدی

دانشتان را با موضوعات زیر عمیق‌تر کنید:

  • Codelabs — با دنبال کردن codelab برای Android،‏ iOS، یا وب، نحوه استفاده از Cloud Firestore را در یک برنامه واقعی یاد بگیرید.
  • مدل داده — درباره نحوه ساختاردهی داده‌ها در Cloud Firestore، ازجمله داده‌های سلسله‌مراتبی و زیرمجموعه‌ها، بیشتر بدانید.
  • افزودن داده — درباره ایجاد و به‌روزرسانی داده‌ها در Cloud Firestore بیشتر بدانید.
  • دریافت داده — درباره نحوه بازیابی داده‌ها بیشتر بدانید.
  • اجرای پُرسمان‌های ساده و مرکب — با نحوه اجرای پُرسمان‌های ساده و مرکب آشنا شوید.
  • مرتب‌سازی و محدود کردن پُرسمان‌ها با نحوه مرتب‌سازی و محدود کردن داده‌های برگردانده‌شده توسط پُرسمان‌هایتان آشنا شوید.
  • مهارت‌های عامل Firebase — با نحوه بهبود ابزارهای توسعه هوش مصنوعی برای اجرای مؤثرتر تکالیف و استفاده از روال‌های مطلوب Cloud Firestore (مثل نوشتن Cloud Firestore Security Rules) آشنا شوید.