এই কুইকস্টার্টটি আপনাকে দেখাবে কীভাবে Cloud Firestore সেট আপ করতে হয়, ডেটা যোগ করতে হয় এবং তারপরে Firebase কনসোলে আপনার যোগ করা ডেটা দেখতে হয়।
Cloud Firestore মোবাইল বা ওয়েব এসডিকে এবং সার্ভার ক্লায়েন্ট লাইব্রেরি সমর্থন করে:
Cloud Firestore অ্যান্ড্রয়েড, আইওএস, ওয়েব এবং আরও অনেক কিছুর জন্য এসডিকে (SDK) সমর্থন করে। Cloud Firestore Security Rules এবং Firebase Authentication সাথে মিলিত হয়ে, মোবাইল ও ওয়েব এসডিকেগুলো সার্ভারবিহীন অ্যাপ আর্কিটেকচারকে সমর্থন করে, যেখানে ক্লায়েন্টরা সরাসরি আপনার Cloud Firestore ডেটাবেসের সাথে সংযোগ স্থাপন করে।
Cloud Firestore C#, Go, Java, Node.js, PHP, Python, এবং Ruby-এর জন্য সার্ভার ক্লায়েন্ট লাইব্রেরি সমর্থন করে। আপনার ডেটাবেসে সম্পূর্ণ অ্যাক্সেস সহ বিশেষাধিকারপ্রাপ্ত সার্ভার পরিবেশ সেট আপ করতে এই ক্লায়েন্ট লাইব্রেরিগুলি ব্যবহার করুন। সার্ভার ক্লায়েন্ট লাইব্রেরির কুইকস্টার্ট- এ এই লাইব্রেরিগুলি সম্পর্কে আরও জানুন।
একটি Cloud Firestore ডাটাবেস তৈরি করুন
যদি আগে থেকে তৈরি করা না থাকে, তাহলে একটি Firebase প্রজেক্ট তৈরি করুন: Firebase কনসোলে , 'Add project'-এ ক্লিক করুন, তারপর একটি Firebase প্রজেক্ট তৈরি করতে বা বিদ্যমান Google Cloud প্রজেক্টে Firebase পরিষেবা যোগ করতে স্ক্রিনে দেওয়া নির্দেশাবলী অনুসরণ করুন।
Firebase কনসোলে আপনার প্রজেক্টটি খুলুন। বাম প্যানেলে, 'Build' প্রসারিত করুন এবং তারপরে 'Firestore database' নির্বাচন করুন।
ডাটাবেস তৈরি করুন -এ ক্লিক করুন।
আপনার ডেটাবেসের জন্য একটি অবস্থান নির্বাচন করুন।
আপনি যদি কোনো অবস্থান নির্বাচন করতে না পারেন, তাহলে আপনার প্রোজেক্টের "ডিফল্ট Google Cloud রিসোর্সের জন্য অবস্থান" ইতিমধ্যেই সেট করা আছে। আপনার প্রোজেক্টের কিছু রিসোর্সের (যেমন ডিফল্ট Cloud Firestore ইনস্ট্যান্স) একটি সাধারণ অবস্থান নির্ভরতা রয়েছে, এবং সেগুলোর অবস্থান প্রোজেক্ট তৈরির সময় অথবা এই অবস্থান নির্ভরতাযুক্ত অন্য কোনো পরিষেবা সেট আপ করার সময় নির্ধারণ করা যেতে পারে।
আপনার Cloud Firestore Security Rules জন্য একটি প্রারম্ভিক মোড নির্বাচন করুন:
- টেস্ট মোড
মোবাইল এবং ওয়েব ক্লায়েন্ট লাইব্রেরি দিয়ে কাজ শুরু করার জন্য এটি ভালো, কিন্তু এর মাধ্যমে যে কেউ আপনার ডেটা পড়তে এবং মুছে ফেলতে পারে। পরীক্ষা করার পর, ‘ আপনার ডেটা সুরক্ষিত করুন’ অংশটি অবশ্যই পর্যালোচনা করে নেবেন।
ওয়েব, অ্যাপল প্ল্যাটফর্ম বা অ্যান্ড্রয়েড এসডিকে দিয়ে কাজ শুরু করতে, টেস্ট মোড নির্বাচন করুন।
- উৎপাদন মোড
মোবাইল এবং ওয়েব ক্লায়েন্ট থেকে সমস্ত রিড এবং রাইট অ্যাক্সেস নিষিদ্ধ করা হয়েছে। আপনার অথেন্টিকেট করা অ্যাপ্লিকেশন সার্ভারগুলো (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 প্রয়োগ করতে পারেন।
তৈরি করুন- এ ক্লিক করুন।
আপনি যখন Cloud Firestore সক্রিয় করেন, তখন ক্লাউড এপিআই ম্যানেজার -এ থাকা এপিআই-টিও সক্রিয় হয়ে যায়।
আপনার উন্নয়ন পরিবেশ সেট আপ করুন
আপনার অ্যাপে প্রয়োজনীয় ডিপেন্ডেন্সি এবং ক্লায়েন্ট লাইব্রেরিগুলো যোগ করুন।
Web
- আপনার ওয়েব অ্যাপে ফায়ারবেস যুক্ত করতে নির্দেশাবলী অনুসরণ করুন।
- Cloud Firestore এসডিকে একটি এনপিএম প্যাকেজ হিসেবে পাওয়া যায়।
আপনাকে Firebase এবং Cloud Firestore উভয়ই ইম্পোর্ট করতে হবে।npm install firebase@12.11.0 --save
import { initializeApp } from "firebase/app"; import { getFirestore } from "firebase/firestore";
Web
- আপনার ওয়েব অ্যাপে ফায়ারবেস যুক্ত করতে নির্দেশাবলী অনুসরণ করুন।
- আপনার অ্যাপে Firebase এবং Cloud Firestore লাইব্রেরিগুলো যোগ করুন:
Cloud Firestore এসডিকে একটি এনপিএম প্যাকেজ হিসেবেও পাওয়া যায়।<script src="https://www.gstatic.com/firebasejs/12.11.0/firebase-app-compat.js"></script> <script src="https://www.gstatic.com/firebasejs/12.11.0/firebase-firestore-compat.js"></script>
আপনাকে ফায়ারবেস এবং Cloud Firestore উভয়ই ম্যানুয়ালি রিকোয়ার করতে হবে।npm install firebase@12.11.0 --save
import firebase from "firebase/compat/app"; // Required for side-effects import "firebase/firestore";
iOS+
আপনার Apple অ্যাপে Firebase যোগ করতে নির্দেশাবলী অনুসরণ করুন।
ফায়ারবেস ডিপেন্ডেন্সিগুলো ইনস্টল ও পরিচালনা করতে সুইফট প্যাকেজ ম্যানেজার ব্যবহার করুন।
- Xcode-এ আপনার অ্যাপ প্রজেক্টটি খুলে, File > Swift Packages > Add Package Dependency -তে যান।
- অনুরোধ করা হলে, Firebase Apple প্ল্যাটফর্ম SDK রিপোজিটরিটি যোগ করুন:
- ফায়ারস্টোর লাইব্রেরিটি নির্বাচন করুন।
- কাজ শেষ হলে, Xcode স্বয়ংক্রিয়ভাবে ব্যাকগ্রাউন্ডে আপনার ডিপেন্ডেন্সিগুলো রিজলভ ও ডাউনলোড করা শুরু করবে।
https://github.com/firebase/firebase-ios-sdk
অ্যান্ড্রয়েড
- আপনার অ্যান্ড্রয়েড অ্যাপে ফায়ারবেস যুক্ত করতে নির্দেশাবলী অনুসরণ করুন।
- 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:34.11.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 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.2") }
কোটলিনের জন্য নির্দিষ্ট কোনো লাইব্রেরি মডিউল খুঁজছেন? অক্টোবর ২০২৩ রিলিজ থেকে, কোটলিন এবং জাভা উভয় ডেভেলপাররাই প্রধান লাইব্রেরি মডিউলটির উপর নির্ভর করতে পারবেন (বিস্তারিত জানতে, এই উদ্যোগ সম্পর্কিত FAQ দেখুন)।
Dart
- যদি আগে থেকে না করে থাকেন, তাহলে আপনার ফ্লাটার অ্যাপে ফায়ারবেস কনফিগার এবং ইনিশিয়ালাইজ করুন ।
- আপনার ফ্লাটার প্রজেক্টের রুট থেকে প্লাগইনটি ইনস্টল করতে নিম্নলিখিত কমান্ডটি চালান:
flutter pub add cloud_firestore
- একবার সম্পন্ন হলে, আপনার ফ্লাটার অ্যাপ্লিকেশনটি পুনর্নির্মাণ করুন:
flutter run
- ঐচ্ছিক: প্রি-কম্পাইলড ফ্রেমওয়ার্ক অন্তর্ভুক্ত করে 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 endfirebase_coreএরfirebase_sdk_version.rbফাইলে উল্লেখিত Firebase iOS SDK-এর ভার্সন দিয়ে IOS_SDK_VERSION প্রতিস্থাপন করুন। আপনি যদিfirebase_coreএর সর্বশেষ ভার্সন ব্যবহার না করেন, তাহলে আপনার লোকাল পাব প্যাকেজ ক্যাশে (সাধারণত~/.pub-cache) এই ফাইলটি খুঁজুন।এছাড়াও, নিশ্চিত করুন যে আপনি CocoaPods 1.9.1 বা তার উচ্চতর সংস্করণে আপগ্রেড করেছেন:
gem install cocoapods
আরও তথ্যের জন্য গিটহাবে ইস্যুটি দেখুন।
সি++
- আপনার C++ প্রজেক্টে Firebase যোগ করতে নির্দেশাবলী অনুসরণ করুন।
- অ্যান্ড্রয়েডের জন্য সি++ ইন্টারফেস।
- গ্রেডল ডিপেন্ডেন্সি। আপনার মডিউল (অ্যাপ-লেভেল) গ্রেডল ফাইলে (সাধারণত
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}")
- ডেস্কটপ ইন্টিগ্রেশন সেট আপ করতে, আপনার C++ প্রজেক্টে Firebase যোগ করুন দেখুন।
ঐক্য
- আপনার ইউনিটি প্রজেক্টে ফায়ারবেস যোগ করতে নির্দেশাবলী অনুসরণ করুন।
- অ্যান্ড্রয়েড বিল্ড মিনিফাই করার জন্য আপনার প্রজেক্ট কনফিগার করতে ইউনিটি ইন্টারফেস ব্যবহার করুন।
- এই অপশনটি প্লেয়ার সেটিংস > অ্যান্ড্রয়েড > পাবলিশিং সেটিংস > মিনিফাই- এ পাওয়া যাবে।
- ইউনিটির বিভিন্ন সংস্করণে অপশনগুলো ভিন্ন হতে পারে, তাই অফিসিয়াল ইউনিটি ডকুমেন্টেশন এবং ফায়ারবেস ইউনিটি বিল্ড ডিবাগ গাইড দেখুন।
- মিনিফিকেশন চালু করার পরেও যদি রেফারেন্স করা মেথডের সংখ্যা সীমা অতিক্রম করে, তাহলে আরেকটি উপায় হলো
multidexচালু করা:-
mainTemplate.gradleযদি প্লেয়ার সেটিংস-এর অধীনে কাস্টম গ্রেডল টেমপ্লেট সক্রিয় করা থাকে - অথবা, মডিউল-স্তরের
build.gradleফাইল, যদি আপনি এক্সপোর্ট করা প্রজেক্টটি বিল্ড করার জন্য অ্যান্ড্রয়েড স্টুডিও ব্যবহার করেন।
-
Error while merging dex archives বার্তাটি এড়াতে আপনাকে অবশ্যই বিল্ডটি মিনিফাই করতে হবে।
(ঐচ্ছিক) Firebase Local Emulator Suite দিয়ে প্রোটোটাইপ এবং পরীক্ষা করুন
মোবাইল ডেভেলপারদের জন্য, আপনার অ্যাপ কীভাবে Cloud Firestore লেখে এবং পড়ে, সে সম্পর্কে কথা বলার আগে, আসুন এমন কিছু টুলের সাথে পরিচয় করিয়ে দিই যা আপনি Cloud Firestore কার্যকারিতা প্রোটোটাইপ এবং পরীক্ষা করার জন্য ব্যবহার করতে পারেন: Firebase Local Emulator Suite । আপনি যদি বিভিন্ন ডেটা মডেল পরীক্ষা করে দেখেন, আপনার নিরাপত্তা নিয়মগুলো অপ্টিমাইজ করেন, অথবা ব্যাক-এন্ডের সাথে ইন্টারঅ্যাক্ট করার সবচেয়ে সাশ্রয়ী উপায় খুঁজে বের করার চেষ্টা করেন, তবে লাইভ সার্ভিস ডেপ্লয় না করে স্থানীয়ভাবে কাজ করতে পারাটা একটি দারুণ ব্যাপার হতে পারে।
Cloud Firestore এমুলেটর হলো Local Emulator Suite একটি অংশ, যা আপনার অ্যাপকে আপনার এমুলেটেড ডেটাবেসের বিষয়বস্তু ও কনফিগারেশনের পাশাপাশি ঐচ্ছিকভাবে আপনার এমুলেটেড প্রোজেক্ট রিসোর্সগুলোর (ফাংশন, অন্যান্য ডেটাবেস এবং নিরাপত্তা বিধি) সাথে ইন্টারঅ্যাক্ট করতে সক্ষম করে।
Cloud Firestore এমুলেটর ব্যবহার করতে মাত্র কয়েকটি ধাপ অনুসরণ করতে হয়:
- এমুলেটরের সাথে সংযোগ করার জন্য আপনার অ্যাপের টেস্ট কনফিগ-এ একটি কোড লাইন যোগ করুন।
- আপনার স্থানীয় প্রজেক্ট ডিরেক্টরির রুট থেকে
firebase emulators:startচালান। - যথারীতি 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 ব্যবহার করুন।
ডিভাইসের সংযোগ বিচ্ছিন্ন হয়ে গেলেও ডেটা অক্ষুণ্ণ রাখতে, ‘অফলাইন ডেটা সক্ষম করুন’ ডকুমেন্টেশনটি দেখুন।
সুইফট
import FirebaseCore import FirebaseFirestore
FirebaseApp.configure() let db = Firestore.firestore()
উদ্দেশ্য-সি
@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;
সি++
// 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); });
সুইফট
// 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)") }
উদ্দেশ্য-সি
// 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); });
সুইফট
// 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)") }
উদ্দেশ্য-সি
// 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()}`); }); });
সুইফট
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)") }
উদ্দেশ্য-সি
[[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."); });
আপনার ডেটা সুরক্ষিত করুন
আপনি যদি ওয়েব, অ্যান্ড্রয়েড বা অ্যাপল প্ল্যাটফর্মের এসডিকে ব্যবহার করেন, তাহলে Cloud Firestore আপনার ডেটা সুরক্ষিত করতে ফায়ারবেস অথেনটিকেশন এবং Cloud Firestore Security Rules ব্যবহার করুন।
শুরু করার জন্য এখানে কিছু প্রাথমিক নিয়মাবলী দেওয়া হলো। আপনি কনসোলের '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;
}
}
}
আপনার ওয়েব, অ্যান্ড্রয়েড বা আইওএস অ্যাপ প্রোডাকশনে ডেপ্লয় করার আগে, এটাও নিশ্চিত করার জন্য পদক্ষেপ নিন যে শুধুমাত্র আপনার অ্যাপ ক্লায়েন্টরাই আপনার Cloud Firestore ডেটা অ্যাক্সেস করতে পারবে। অ্যাপ চেক ডকুমেন্টেশন দেখুন।
আপনি যদি সার্ভার SDK-গুলোর মধ্যে কোনো একটি ব্যবহার করেন, তাহলে Cloud Firestore আপনার ডেটা সুরক্ষিত করতে আইডেন্টিটি অ্যান্ড অ্যাক্সেস ম্যানেজমেন্ট (IAM) ব্যবহার করুন।
একটি ভিডিও টিউটোরিয়াল দেখুন
Cloud Firestore মোবাইল ক্লায়েন্ট লাইব্রেরিগুলো দিয়ে কাজ শুরু করার বিষয়ে বিস্তারিত নির্দেশনার জন্য, নিচের ভিডিও টিউটোরিয়ালগুলোর মধ্যে যেকোনো একটি দেখুন:
ওয়েব
iOS+
অ্যান্ড্রয়েড
আপনি ফায়ারবেস ইউটিউব চ্যানেলে আরও ভিডিও খুঁজে পেতে পারেন।
পরবর্তী পদক্ষেপ
নিম্নলিখিত বিষয়গুলোর মাধ্যমে আপনার জ্ঞানকে আরও গভীর করুন:
- কোডল্যাব — অ্যান্ড্রয়েড , আইওএস বা ওয়েবের জন্য কোডল্যাব অনুসরণ করে একটি বাস্তব অ্যাপে Cloud Firestore ব্যবহার করতে শিখুন।
- ডেটা মডেল — Cloud Firestore ডেটা কীভাবে গঠিত হয়, সে সম্পর্কে আরও জানুন, যার মধ্যে শ্রেণিবদ্ধ ডেটা এবং উপ-সংগ্রহ অন্তর্ভুক্ত রয়েছে।
- ডেটা যোগ করুন — Cloud Firestore ডেটা তৈরি এবং আপডেট করার বিষয়ে আরও জানুন।
- ডেটা সংগ্রহ করুন — ডেটা কীভাবে পুনরুদ্ধার করতে হয় সে সম্পর্কে আরও জানুন।
- সরল ও যৌগিক কোয়েরি সম্পাদন করুন — সরল ও যৌগিক কোয়েরি কীভাবে চালাতে হয় তা শিখুন।
- কোয়েরি সাজানো এবং সীমিত করা: আপনার কোয়েরি থেকে প্রাপ্ত ডেটা কীভাবে সাজাতে এবং সীমিত করতে হয় তা জানুন।