রিয়েলটাইম ডেটাবেস এমুলেটরের সাথে আপনার অ্যাপটি সংযুক্ত করুন

আপনার অ্যাপটিকে Realtime Database এমুলেটরের সাথে সংযুক্ত করার আগে, নিশ্চিত করুন যে আপনি সামগ্রিক Firebase Local Emulator Suite ওয়ার্কফ্লো বুঝতে পেরেছেন এবং আপনি Local Emulator Suite ইনস্টল এবং কনফিগার করেছেন এবং এর CLI কমান্ডগুলি পর্যালোচনা করেছেন।

একটি Firebase প্রকল্প বেছে নিন

Firebase Local Emulator Suite একটি একক ফায়ারবেস প্রকল্পের জন্য পণ্য অনুকরণ করে।

ব্যবহারের জন্য প্রজেক্ট নির্বাচন করতে, এমুলেটর শুরু করার আগে, CLI রানে আপনার ওয়ার্কিং ডিরেক্টরিতে firebase use । অথবা, আপনি প্রতিটি এমুলেটর কমান্ডে --project ফ্ল্যাগটি পাস করতে পারেন।

Local Emulator Suite বাস্তব ফায়ারবেস প্রকল্প এবং ডেমো প্রকল্পের অনুকরণ সমর্থন করে।

প্রকল্পের ধরণ ফিচার এমুলেটরের সাথে ব্যবহার করুন
বাস্তব

একটি আসল ফায়ারবেস প্রকল্প হল আপনার তৈরি এবং কনফিগার করা প্রকল্প (সম্ভবত Firebase কনসোলের মাধ্যমে)।

বাস্তব প্রকল্পগুলিতে লাইভ রিসোর্স থাকে, যেমন ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন, অথবা ফায়ারবেস প্রকল্পের জন্য আপনার সেট আপ করা অন্য কোনও রিসোর্স।

আসল ফায়ারবেস প্রকল্পগুলির সাথে কাজ করার সময়, আপনি যেকোনো বা সমস্ত সমর্থিত পণ্যের জন্য এমুলেটর চালাতে পারেন।

আপনি যে পণ্যগুলি অনুকরণ করছেন না, তার জন্য আপনার অ্যাপস এবং কোড লাইভ রিসোর্সের সাথে ইন্টারঅ্যাক্ট করবে (ডাটাবেস ইনস্ট্যান্স, স্টোরেজ বাকেট, ফাংশন ইত্যাদি)।

ডেমো

একটি ডেমো ফায়ারবেস প্রকল্পের কোনও বাস্তব ফায়ারবেস কনফিগারেশন এবং কোনও লাইভ রিসোর্স নেই। এই প্রকল্পগুলি সাধারণত কোডল্যাব বা অন্যান্য টিউটোরিয়ালের মাধ্যমে অ্যাক্সেস করা হয়।

ডেমো প্রকল্পের জন্য প্রকল্প আইডিগুলিতে demo- উপসর্গ থাকে।

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

আমরা আপনাকে যেখানেই সম্ভব ডেমো প্রকল্প ব্যবহার করার পরামর্শ দিচ্ছি। সুবিধার মধ্যে রয়েছে:

  • সহজ সেটআপ, যেহেতু আপনি ফায়ারবেস প্রকল্প তৈরি না করেই এমুলেটরগুলি চালাতে পারবেন
  • শক্তিশালী নিরাপত্তা, যেহেতু আপনার কোড যদি ভুলবশত অ-অনুকরণীয় (উৎপাদন) সংস্থানগুলিকে ব্যবহার করে, তাহলে ডেটা পরিবর্তন, ব্যবহার এবং বিলিং এর কোনও সম্ভাবনা নেই।
  • আরও ভালো অফলাইন সাপোর্ট, যেহেতু আপনার SDK কনফিগারেশন ডাউনলোড করার জন্য ইন্টারনেট অ্যাক্সেস করার প্রয়োজন নেই।

এমুলেটরদের সাথে কথা বলার জন্য আপনার অ্যাপটি ব্যবহার করুন

অ্যান্ড্রয়েড, অ্যাপল প্ল্যাটফর্ম এবং ওয়েব এসডিকে

Realtime Database সাথে ইন্টারঅ্যাক্ট করার জন্য আপনার ইন-অ্যাপ কনফিগারেশন বা টেস্ট ক্লাস সেট আপ করুন নিম্নরূপ।

Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val database = Firebase.database
database.useEmulator("10.0.2.2", 9000)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseDatabase database = FirebaseDatabase.getInstance();
database.useEmulator("10.0.2.2", 9000);
সুইফট
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://127.0.0.1:9000?ns=YOUR_DATABASE_NAMESPACE")

Web

import { getDatabase, connectDatabaseEmulator } from "firebase/database";

const db = getDatabase();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  connectDatabaseEmulator(db, "127.0.0.1", 9000);
} 

Web

var db = firebase.database();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  db.useEmulator("127.0.0.1", 9000);
} 

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

Admin SDK গুলি

FIREBASE_DATABASE_EMULATOR_HOST এনভায়রনমেন্ট ভেরিয়েবল সেট করা হলে Firebase Admin SDK স্বয়ংক্রিয়ভাবে Realtime Database এমুলেটরের সাথে সংযুক্ত হয়:

export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"

যদি আপনার কোডটি Cloud Functions এমুলেটরের ভিতরে চলমান থাকে, তাহলে initializeApp কল করার সময় আপনার প্রোজেক্ট আইডি এবং অন্যান্য কনফিগারেশন স্বয়ংক্রিয়ভাবে সেট হয়ে যাবে।

যদি আপনি চান যে আপনার Admin SDK কোডটি অন্য পরিবেশে চলমান একটি শেয়ার্ড এমুলেটরের সাথে সংযুক্ত হোক, তাহলে আপনাকে Firebase CLI ব্যবহার করে সেট করা একই প্রজেক্ট আইডি নির্দিষ্ট করতে হবে। আপনি সরাসরি initializeApp এর জন্য একটি প্রজেক্ট আইডি পাস করতে পারেন অথবা GCLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল সেট করতে পারেন।

Node.js অ্যাডমিন SDK
admin.initializeApp({ projectId: "your-project-id" });
পরিবেশ পরিবর্তনশীল
export GCLOUD_PROJECT="your-project-id"

পরীক্ষার মধ্যে আপনার ডাটাবেস সাফ করুন

কার্যকলাপের মধ্যে Realtime Database ফ্লাশ করার জন্য, আপনি ডাটাবেস রেফারেন্সটি সাফ করতে পারেন। আপনি কেবল এমুলেটর প্রক্রিয়াটি বন্ধ করার বিকল্প হিসাবে এই পদ্ধতিটি ব্যবহার করতে পারেন।

Kotlin
// With a DatabaseReference, write null to clear the database.
database.reference.setValue(null)
Java
// With a DatabaseReference, write null to clear the database.
database.getReference().setValue(null);
সুইফট
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

Web

import { getDatabase, ref, set } from "firebase/database";

// With a database Reference, write null to clear the database.
const db = getDatabase();
set(ref(db), null);

Web

// With a database Reference, write null to clear the database.
firebase.database().ref().set(null);

স্বাভাবিকভাবেই, আপনার প্ল্যাটফর্মের অ্যাসিঙ্ক্রোনাস ইভেন্ট হ্যান্ডলিং বৈশিষ্ট্যগুলি ব্যবহার করে ফ্লাশ শেষ হয়েছে নাকি ব্যর্থ হয়েছে তা নিশ্চিত হওয়ার জন্য আপনার কোডটি অপেক্ষা করা উচিত।

এই ধরণের ধাপ বাস্তবায়নের পর, আপনি আপনার পরীক্ষাগুলিকে সিকোয়েন্স করতে পারেন এবং আত্মবিশ্বাসের সাথে আপনার ফাংশনগুলি ট্রিগার করতে পারেন যে রানের মধ্যে পুরানো ডেটা মুছে ফেলা হবে এবং আপনি একটি নতুন বেসলাইন পরীক্ষা কনফিগারেশন ব্যবহার করছেন।

আমদানি এবং রপ্তানি ডেটা

Cloud Storage for Firebase আপনাকে একটি চলমান এমুলেটর ইনস্ট্যান্স থেকে ডেটা রপ্তানি করতে দেয়। আপনার ইউনিট পরীক্ষা বা ক্রমাগত ইন্টিগ্রেশন ওয়ার্কফ্লোতে ব্যবহারের জন্য ডেটার একটি বেসলাইন সেট নির্ধারণ করুন, তারপর এটি টিমের মধ্যে ভাগ করে নেওয়ার জন্য রপ্তানি করুন।

firebase emulators:export ./dir

পরীক্ষায়, এমুলেটর স্টার্টআপে, বেসলাইন ডেটা আমদানি করুন।

firebase emulators:start --import=./dir

আপনি শাটডাউনের সময় এমুলেটরকে ডেটা এক্সপোর্ট করার নির্দেশ দিতে পারেন, হয় একটি এক্সপোর্ট পাথ নির্দিষ্ট করে অথবা কেবল --import ফ্ল্যাগে প্রেরিত পাথ ব্যবহার করে।

firebase emulators:start --import=./dir --export-on-exit

এই ডেটা ইম্পোর্ট এবং এক্সপোর্ট অপশনগুলি firebase emulators:exec কমান্ডের সাথেও কাজ করে। আরও জানতে, এমুলেটর কমান্ড রেফারেন্স দেখুন।

নিরাপত্তা নিয়মের কার্যকলাপ কল্পনা করুন

প্রোটোটাইপ এবং টেস্ট লুপের মাধ্যমে কাজ করার সময়, আপনি Local Emulator Suite দ্বারা প্রদত্ত ভিজ্যুয়ালাইজেশন সরঞ্জাম এবং প্রতিবেদনগুলি ব্যবহার করতে পারেন।

নিয়ম মূল্যায়ন কল্পনা করুন

আপনার প্রোটোটাইপে নিরাপত্তা নিয়ম যোগ করার সাথে সাথে আপনি Local Emulator Suite টুল দিয়ে সেগুলি ডিবাগ করতে পারবেন।

একাধিক পরীক্ষা চালানোর পর, আপনি পরীক্ষার কভারেজ রিপোর্ট অ্যাক্সেস করতে পারবেন যা দেখায় যে আপনার প্রতিটি নিয়ম কীভাবে মূল্যায়ন করা হয়েছে। রিপোর্টগুলি পেতে, এমুলেটরটি চলাকালীন একটি উন্মুক্ত এন্ডপয়েন্ট জিজ্ঞাসা করুন। ব্রাউজার-বান্ধব সংস্করণের জন্য, নিম্নলিখিত URL ব্যবহার করুন:

http://localhost:9000/.inspect/coverage?ns=<database_name>

এটি আপনার নিয়মগুলিকে এক্সপ্রেশন এবং সাবএক্সপ্রেশনে বিভক্ত করে, যেগুলি আপনি আরও তথ্যের জন্য মাউসওভার করতে পারেন, যার মধ্যে এক্সিকিউশনের সংখ্যা এবং ফেরত আসা মান অন্তর্ভুক্ত। এই ডেটার raw JSON ভার্সনের জন্য, আপনার কোয়েরিতে নিম্নলিখিত URLটি অন্তর্ভুক্ত করুন:

http://localhost:9000/.inspect/coverage.json?ns=<database_name>

এরপর কী?