Firestore Standard এডিশন ব্যবহার শুরু করা

এই কুইকস্টার্ট আপনাকে দেখায় যে কীভাবে Cloud Firestore সেট-আপ করতে হয়, ডেটা যোগ করতে হয়, তারপর Firebase কনসোলে আপনার যোগ করা ডেটা দেখতে হয়।

Cloud Firestore মোবাইল বা ওয়েব SDK এবং সার্ভার ক্লায়েন্ট লাইব্রেরিতে কাজ করে:

  • Cloud Firestore Android, iOS, ওয়েব ও আরও অনেক কিছুর জন্য SDK সাপোর্ট করে। Cloud Firestore Security Rules এবং Firebase Authentication-এর সাথে যুক্ত হয়ে, মোবাইল এবং ওয়েব SDK, সার্ভারলেস অ্যাপ আর্কিটেকচারকে সাপোর্ট করে যেখানে ক্লায়েন্ট সরাসরি আপনার Cloud Firestore ডেটাবেসের সাথে কানেক্ট করে।

  • Cloud Firestore-এ C#, Go, Java, Node.js, PHP, Python ও Ruby-এর জন্য সার্ভার ক্লায়েন্ট লাইব্রেরি কাজ করে। আপনার ডেটাবেসে সম্পূর্ণ অ্যাক্সেস সহ বিশেষাধিকারপ্রাপ্ত সার্ভার এনভায়রনমেন্ট সেট-আপ করতে এইসব ক্লায়েন্ট লাইব্রেরি ব্যবহার করুন। সার্ভার ক্লায়েন্ট লাইব্রেরির জন্য ক্যুইকস্টার্ট-এ এইসব লাইব্রেরি সম্পর্কে আরও জানুন।

AI-এর মাধ্যমে সহায়তা পেতে, নিচের প্রম্পটটি আপনার AI কোডিং এজেন্টে (যেমন, Android Studio-তে Gemini, 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 প্রোজেক্ট তৈরি করতে অথবা আগে থেকে থাকা Google Cloud প্রোজেক্টে Firebase পরিষেবা যোগ করতে অন-স্ক্রিন নির্দেশাবলী অনুসরণ করুন।

  2. বাঁদিকের প্যানেলে, ডেটাবেস ও স্টোরেজ > Firestore বিকল্পে যান।

  3. ডেটাবেস তৈরি করুন বিকল্পে ক্লিক করুন।

  4. আপনার ডেটাবেসের জন্য একটি লোকেশন বেছে নিন।

    আপনি কোনও লোকেশন বেছে নিতে না পারলে, আপনার প্রোজেক্টের "ডিফল্ট Google Cloud রিসোর্সের জন্য লোকেশন" আগে থেকেই সেট করা আছে। আপনার প্রোজেক্টের কিছু রিসোর্স (যেমন ডিফল্ট Cloud Firestore ইনস্ট্যান্স) একটি সাধারণ লোকেশন ডিপেন্ডেন্সি শেয়ার করে এবং প্রোজেক্ট তৈরি করার সময় বা এই লোকেশন ডিপেন্ডেন্সি শেয়ার করে এমন অন্য কোনও পরিষেবা সেট-আপ করার সময় তাদের লোকেশন সেট করা যেতে পারে।

  5. আপনার Cloud Firestore Security Rules-এর জন্য একটি স্টার্টিং মোড বেছে নিন:

    টেস্ট মোড

    মোবাইল ও ওয়েব ক্লায়েন্ট লাইব্রেরি ব্যবহার শুরু করার জন্য ভাল, তবে এটি যে কাউকে আপনার ডেটা পড়তে ও ওভাররাইট করতে দেয়। টেস্ট করার পরে, আপনার ডেটা সুরক্ষিত করুন বিভাগটি পর্যালোচনা করতে ভুলবেন না।

    ওয়েব, Apple প্ল্যাটফর্ম বা Android SDK-এর মাধ্যমে শুরু করতে, টেস্ট মোড বেছে নিন।

    প্রোডাকশন মোড

    মোবাইল ও ওয়েব ক্লায়েন্ট থেকে সব রিড ও রাইট অ্যাক্সেস বাতিল করে। আপনার যাচাই করা অ্যাপ্লিকেশন সার্ভার (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 API Manager-এও API চালু করে।

আপনার ডেভেলপমেন্ট এনভায়রনমেন্ট সেট-আপ করুন

আপনার অ্যাপে প্রয়োজনীয় ডিপেন্ডেন্সি ও ক্লায়েন্ট লাইব্রেরি যোগ করুন।

Web

  1. আপনার ওয়েব অ্যাপে Firebase যোগ করতে নির্দেশাবলী অনুসরণ করুন।
  2. Cloud Firestore SDK, 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 SDK-ও 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+

আপনার Apple অ্যাপে Firebase যোগ করতে নির্দেশাবলী অনুসরণ করুন।

Firebase ডিপেন্ডেন্সি ইনস্টল ও ম্যানেজ করতে Swift প্যাকেজ ম্যানেজার ব্যবহার করুন।

  1. Xcode-এ, আপনার অ্যাপ প্রোজেক্ট খোলা রেখে, ফাইল > Swift প্যাকেজ > প্যাকেজ ডিপেন্ডেন্সি যোগ করুন বিকল্পে নেভিগেট করুন।
  2. প্রম্পট করা হলে, Firebase Apple প্ল্যাটফর্ম SDK রিপোজিটরি যোগ করুন:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. Firestore লাইব্রেরি বেছে নিন।
  5. হয়ে গেলে, Xcode অটোমেটিক ব্যাকগ্রাউন্ডে আপনার ডিপেন্ডেন্সি সমাধান ও ডাউনলোড করা শুরু করবে।
Android
  1. আপনার Android অ্যাপে Firebase যোগ করতে নির্দেশাবলী অনুসরণ করুন।
  2. Firebase Android BoM ব্যবহার করে, আপনার মডিউল (অ্যাপ-লেভেল) Gradle ফাইলে (সাধারণত app/build.gradle.kts বা app/build.gradle) Android-এর জন্য Cloud Firestore লাইব্রেরির ডিপেন্ডেন্সি ঘোষণা করুন।
    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 ব্যবহার করে, আপনার অ্যাপ সবসময় Firebase Android লাইব্রেরির মানানসই ভার্সন ব্যবহার করবে।

    (বিকল্প) BoM ব্যবহার না করে Firebase লাইব্রেরি ডিপেন্ডেন্সি ঘোষণা করুন

    আপনি 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.0")
    }

    Kotlin-নির্দিষ্ট লাইব্রেরি মডিউল খুঁজছেন? অক্টোবর ২০২৩ রিলিজ থেকে শুরু করে, Kotlin ও Java ডেভেলপাররা প্রধান লাইব্রেরি মডিউলের উপর নির্ভর করতে পারবেন (বিস্তারিত জানতে, এই উদ্যোগ সম্পর্কে প্রায়শই জিজ্ঞাসিত প্রশ্ন দেখুন)।

Dart

  1. আপনি আগে থেকে না করে থাকলে, আপনার Flutter অ্যাপে Firebase কনফিগার ও ইনিশিয়ালাইজ করুন।
  2. আপনার Flutter প্রোজেক্টের রুট থেকে, প্লাগ-ইন ইনস্টল করতে নিম্নলিখিত কমান্ড রান করুন:
    flutter pub add cloud_firestore
  3. সম্পূর্ণ হয়ে গেলে, আপনার Flutter অ্যাপ্লিকেশন আবার তৈরি করুন:
    flutter run
  4. ঐচ্ছিক: প্রি-কম্পাইল করা ফ্রেমওয়ার্ক অন্তর্ভুক্ত করে iOS ও macOS বিল্ড টাইম উন্নত করুন।

    বর্তমানে, iOS-এর জন্য Firestore SDK এমন কোডের উপর নির্ভর করে যা Xcode-এ তৈরি করতে ৫ মিনিটের বেশি সময় লাগতে পারে। বিল্ড টাইম উল্লেখযোগ্যভাবে কমাতে, আপনার Podfile-এর target 'Runner' do ব্লকে এই লাইনটি যোগ করে আপনি একটি প্রি-কম্পাইল করা ভার্সন ব্যবহার করতে পারেন:

    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_core-এর firebase_sdk_version.rb ফাইলে উল্লেখ করা Firebase iOS SDK-এর ভার্সন লিখুন। আপনি firebase_core-এর লেটেস্ট ভার্সন ব্যবহার না করলে, আপনার লোকাল Pub প্যাকেজ ক্যাশে (সাধারণত ~/.pub-cache) এই ফাইলটি খুঁজুন।

    এছাড়াও, CocoaPods-কে 1.9.1 বা তার পরবর্তী ভার্সনে আপগ্রেড করেছেন কিনা তা নিশ্চিত করুন:

    gem install cocoapods

    আরও তথ্যের জন্য GitHub-এ সমস্যা দেখুন।

C++
  1. আপনার C++ প্রোজেক্টে Firebase যোগ করতে নির্দেশাবলী অনুসরণ করুন।
  2. Android-এর জন্য C++ ইন্টারফেস।
    • 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. ডেস্কটপ ইন্টিগ্রেশন সেট-আপ করতে, আপনার C++ প্রোজেক্টে Firebase যোগ করুন দেখুন।
Unity
  1. আপনার Unity প্রোজেক্টে Firebase যোগ করতে নির্দেশাবলী অনুসরণ করুন।
  2. Android বিল্ড ছোট করার জন্য আপনার প্রোজেক্ট কনফিগার করতে Unity ইন্টারফেস ব্যবহার করুন।
  3. Error while merging dex archives মেসেজ এড়াতে আপনাকে অবশ্যই বিল্ড ছোট করতে হবে।

    • এই বিকল্পটি প্লেয়ার সেটিংস > Android > প্রকাশনা সেটিংস > ছোট করুন বিকল্পে পাওয়া যাবে।
    • Unity-র বিভিন্ন ভার্সনে বিকল্পগুলি আলাদা হতে পারে, তাই অফিসিয়াল Unity ডকুমেন্টেশন এবং Firebase Unity বিল্ড ডিবাগ গাইড দেখুন।
    • ছোট করার বিকল্প চালু করার পরেও যদি রেফারেন্স করা পদ্ধতির সংখ্যা এখনও সীমা অতিক্রম করে, তাহলে আরেকটি বিকল্প হল multidex চালু করা:
      • mainTemplate.gradle যদি প্লেয়ার সেটিংস-এর অধীনে কাস্টম গ্রেডেল টেমপ্লেট চালু করা থাকে
      • অথবা, এক্সপোর্ট করা প্রোজেক্ট তৈরি করতে Android Studio ব্যবহার করলে, মডিউল-লেভেল build.gradle ফাইল।

(ঐচ্ছিক) 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 প্ল্যাটফর্ম SDK ব্যবহার করে আপনার অ্যাপের প্রোটোটাইপ কোড থেকে কল করা।

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 এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
import FirebaseCore
import FirebaseFirestore
FirebaseApp.configure()

let db = Firestore.firestore()
Objective-C
মনে রাখবেন: এই প্রোডাক্ট watchOS এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
@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 এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
// 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 এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
// 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 এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
// 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 এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
// 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.");
});

ডেটা দেখা

Cloud Firestore-এ ডেটা যোগ করেছেন কিনা তা দ্রুত যাচাই করতে Firebase কনসোলে ডেটা ভিউয়ার ব্যবহার করুন।

এছাড়াও, আপনি "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 এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
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 এবং অ্যাপ ক্লিপ টার্গেটে উপলভ্য নয়।
[[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 প্ল্যাটফর্ম SDK ব্যবহার করেন, তাহলে Cloud Firestore-এ আপনার ডেটা সুরক্ষিত করতে Firebase Authentication এবং Cloud Firestore Security Rules ব্যবহার করুন।

শুরু করার জন্য আপনি ব্যবহার করতে পারেন এমন কিছু প্রাথমিক নিয়মের সেট এখানে দেওয়া হল। আপনি 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 ডেটা অ্যাক্সেস করতে পারে তা নিশ্চিত করার জন্য পদক্ষেপ নিন। App Check ডকুমেন্টেশন দেখুন।

আপনি যদি কোনও সার্ভার SDK ব্যবহার করেন, তাহলে Cloud Firestore-এ আপনার ডেটা সুরক্ষিত করতে Identity and Access Management (IAM) ব্যবহার করুন।

ভিডিও টিউটোরিয়াল দেখুন

Cloud Firestore মোবাইল ক্লায়েন্ট লাইব্রেরি ব্যবহার শুরু করার ব্যাপারে বিস্তারিত নির্দেশিকা পেতে, নিম্নলিখিত ভিডিও টিউটোরিয়ালগুলির মধ্যে একটি দেখুন:

ওয়েব
iOS+
Android

আপনি Firebase YouTube চ্যানেলে আরও ভিডিও দেখতে পাবেন।

পরবর্তী ধাপ

নিম্নলিখিত বিষয়গুলি থেকে আপনার জ্ঞান আরও গভীর করুন:

  • Codelabs — Android, iOS বা ওয়েব-এর জন্য codelab অনুসরণ করে আসল অ্যাপে Cloud Firestore ব্যবহার করতে শিখুন।
  • ডেটা মডেল — Cloud Firestore-এ কীভাবে ডেটা স্ট্রাকচার করা হয় সেই সম্পর্কে আরও জানুন, যার মধ্যে রয়েছে হায়ারার্কিক্যাল ডেটা এবং সাবকালেকশন।
  • ডেটা যোগ করুন — Cloud Firestore-এ ডেটা তৈরি ও আপডেট করা সম্পর্কে আরও জানুন।
  • ডেটা পান — কীভাবে ডেটা ফিরিয়ে আনবেন সেই সম্পর্কে আরও জানুন।
  • সহজ ও জটিল কোয়েরি পারফর্ম করা — সহজ ও জটিল কোয়েরি কীভাবে রান করতে হয় তা জানুন।
  • কোয়েরি অর্ডার ও সীমাবদ্ধ করা আপনার কোয়েরি থেকে পাওয়া ডেটা কীভাবে অর্ডার ও সীমাবদ্ধ করবেন তা জানুন।
  • Firebase এজেন্ট সংক্রান্ত দক্ষতা — আরও কার্যকরভাবে টাস্ক সম্পূর্ণ করতে এবং Cloud Firestore পেশাদার পদ্ধতি (যেমন Cloud Firestore Security Rules লেখা) ব্যবহার করতে, আপনার AI ডেভেলপমেন্ট টুল কীভাবে উন্নত করবেন তা জানুন।