ক্লাউড ফায়ারস্টোর স্ট্যান্ডার্ড সংস্করণ দিয়ে শুরু করুন

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

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

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

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

একটি Cloud Firestore ডাটাবেস তৈরি করুন

  1. যদি আপনি ইতিমধ্যেই না করে থাকেন, তাহলে একটি Firebase প্রকল্প তৈরি করুন: Firebase কনসোলে , প্রকল্প যোগ করুন ক্লিক করুন, তারপর একটি Firebase প্রকল্প তৈরি করতে বা বিদ্যমান Google Cloud প্রকল্পে Firebase পরিষেবা যোগ করতে অন-স্ক্রীন নির্দেশাবলী অনুসরণ করুন।

  2. Firebase কনসোলে আপনার প্রজেক্টটি খুলুন। বাম প্যানেলে, Build প্রসারিত করুন এবং তারপর Firestore database নির্বাচন করুন।

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

  4. আপনার ডাটাবেসের জন্য একটি অবস্থান নির্বাচন করুন।

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

  5. আপনার Cloud Firestore Security Rules জন্য একটি শুরুর মোড নির্বাচন করুন:

    পরীক্ষা মোড

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

    ওয়েব, অ্যাপল প্ল্যাটফর্ম, অথবা অ্যান্ড্রয়েড 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 সক্ষম করেন, তখন এটি ক্লাউড এপিআই ম্যানেজারে এপিআইও সক্ষম করে।

আপনার উন্নয়ন পরিবেশ সেট আপ করুন

আপনার অ্যাপে প্রয়োজনীয় নির্ভরতা এবং ক্লায়েন্ট লাইব্রেরি যোগ করুন।

Web

  1. আপনার ওয়েব অ্যাপে Firebase যোগ করার জন্য নির্দেশাবলী অনুসরণ করুন।
  2. Cloud Firestore SDK একটি npm প্যাকেজ হিসেবে উপলব্ধ।
    npm install firebase@12.8.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/12.8.0/firebase-app-compat.js"></script>
    <script src="https://www.gstatic.com/firebasejs/12.8.0/firebase-firestore-compat.js"></script>
    Cloud Firestore SDK একটি npm প্যাকেজ হিসেবেও উপলব্ধ।
    npm install firebase@12.8.0 --save
    আপনাকে ম্যানুয়ালি Firebase এবং Cloud Firestore উভয়ই প্রয়োজন হবে।
    import firebase from "firebase/compat/app";
    // Required for side-effects
    import "firebase/firestore";
আইওএস+

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

ফায়ারবেস নির্ভরতা ইনস্টল এবং পরিচালনা করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।

  1. Xcode-এ, আপনার অ্যাপ প্রজেক্ট খোলা থাকা অবস্থায়, File > Swift Packages > Add Package Dependency- তে নেভিগেট করুন।
  2. অনুরোধ করা হলে, Firebase Apple platforms SDK সংগ্রহস্থল যোগ করুন:
  3.   https://github.com/firebase/firebase-ios-sdk
      
  4. ফায়ারস্টোর লাইব্রেরিটি বেছে নিন।
  5. শেষ হয়ে গেলে, Xcode স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে আপনার নির্ভরতাগুলি সমাধান এবং ডাউনলোড করা শুরু করবে।
অ্যান্ড্রয়েড
  1. আপনার অ্যান্ড্রয়েড অ্যাপে Firebase যোগ করার জন্য নির্দেশাবলী অনুসরণ করুন।
  2. Firebase Android BoM ব্যবহার করে, আপনার মডিউল (app-level) 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:34.8.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 ব্যবহার করে, আপনার অ্যাপ সর্বদা 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:26.1.0")
    }

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

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-এ সমস্যাটি দেখুন।

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

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

(ঐচ্ছিক) 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);

আপনার ওয়েব অ্যাপের firebaseConfig দিয়ে FIREBASE_CONFIGURATION প্রতিস্থাপন করুন।

ডিভাইসটি সংযোগ বিচ্ছিন্ন হয়ে গেলেও ডেটা ধরে রাখতে, অফলাইন ডেটা সক্ষম করুন ডকুমেন্টেশনটি দেখুন।

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

আপনার ওয়েব অ্যাপের firebaseConfig দিয়ে FIREBASE_CONFIGURATION প্রতিস্থাপন করুন।

ডিভাইসটি সংযোগ বিচ্ছিন্ন হয়ে গেলেও ডেটা ধরে রাখতে, অফলাইন ডেটা সক্ষম করুন ডকুমেন্টেশনটি দেখুন।

সুইফট
দ্রষ্টব্য: এই পণ্যটি watchOS এবং অ্যাপ ক্লিপ টার্গেটগুলিতে উপলব্ধ নয়।
import FirebaseCore
import FirebaseFirestore
FirebaseApp.configure()

let db = Firestore.firestore()
অবজেক্টিভ-সি
দ্রষ্টব্য: এই পণ্যটি 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;
সি++
// Make sure the call to `Create()` happens some time before you call Firestore::GetInstance().
App::Create();
Firestore* db = Firestore::GetInstance();
ঐক্য
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);
});
সুইফট
দ্রষ্টব্য: এই পণ্যটি 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)")
}
অবজেক্টিভ-সি
দ্রষ্টব্য: এই পণ্যটি 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}'));
সি++
// 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;
  }
});
ঐক্য
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);
});
সুইফট
দ্রষ্টব্য: এই পণ্যটি 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)")
}
অবজেক্টিভ-সি
দ্রষ্টব্য: এই পণ্যটি 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}'));
সি++
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;
      }
    });
ঐক্য
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 ডেটা যোগ করেছেন কিনা তা দ্রুত যাচাই করতে ফায়ারবেস কনসোলে ডেটা ভিউয়ার ব্যবহার করুন।

আপনি সম্পূর্ণ সংগ্রহটি পুনরুদ্ধার করতে "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()}`);
    });
});
সুইফট
দ্রষ্টব্য: এই পণ্যটি 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)")
}
অবজেক্টিভ-সি
দ্রষ্টব্য: এই পণ্যটি 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()}");
  }
});
সি++
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;
  }
});
ঐক্য
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.");
});

আপনার ডেটা সুরক্ষিত করুন

আপনি যদি ওয়েব, অ্যান্ড্রয়েড, অথবা অ্যাপল প্ল্যাটফর্ম SDK ব্যবহার করেন, তাহলে Cloud Firestore আপনার ডেটা সুরক্ষিত করতে ফায়ারবেস প্রমাণীকরণ এবং Cloud Firestore Security Rules ব্যবহার করুন।

শুরু করার জন্য এখানে কিছু মৌলিক নিয়ম সেট দেওয়া হল যা আপনি ব্যবহার করতে পারেন। আপনি কনসোলের নিয়ম ট্যাবে আপনার নিরাপত্তা নিয়ম পরিবর্তন করতে পারেন।

প্রমাণীকরণ প্রয়োজন

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

আপনার ওয়েব, অ্যান্ড্রয়েড, অথবা iOS অ্যাপটি প্রোডাকশনে স্থাপন করার আগে, শুধুমাত্র আপনার অ্যাপ ক্লায়েন্টরা যাতে আপনার Cloud Firestore ডেটা অ্যাক্সেস করতে পারে তা নিশ্চিত করার জন্য পদক্ষেপ নিন। অ্যাপ চেক ডকুমেন্টেশন দেখুন।

আপনি যদি সার্ভার SDK ব্যবহার করেন, তাহলে Cloud Firestore আপনার ডেটা সুরক্ষিত করতে আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট (IAM) ব্যবহার করুন।

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

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

ওয়েব
আইওএস+
অ্যান্ড্রয়েড

আপনি Firebase ইউটিউব চ্যানেলে আরও ভিডিও পেতে পারেন।

পরবর্তী পদক্ষেপ

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