আপনার অ্যাপ্লিকেশনটিকে ক্লাউড ফায়ারস্টোর এমুলেটরের সাথে সংযুক্ত করুন

ক্লাউড Firestore এমুলেটর এ আপনার অ্যাপ্লিকেশান সংযোগ করার আগে, আপনি নিশ্চিত করুন সামগ্রিক Firebase স্থানীয় এমুলেটর সুইট কর্মপ্রবাহ বুঝতে , এবং আপনি যে ইনস্টল ও কনফিগার স্থানীয় এমুলেটর সুইট ও তার পর্যালোচনা CLI কমান্ড

একটি ফায়ারবেস প্রকল্প বেছে নিন

Firebase স্থানীয় এমুলেটর স্যুট একটি একক Firebase প্রকল্পের জন্য পণ্য অনুকরণ করে।

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

স্থানীয় এমুলেটর সুইট বাস্তব Firebase প্রকল্প এবং ডেমো প্রকল্পের এমুলেশন সমর্থন করে।

প্রকল্পের ধরন বৈশিষ্ট্য এমুলেটরগুলির সাথে ব্যবহার করুন
রিয়াল

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

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

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

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

ডেমো

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

ডেমো প্রকল্পগুলির জন্য প্রকল্প ID উপস্থিত রয়েছে demo- উপসর্গ।

যখন ডেমো Firebase প্রকল্প, আপনার অ্যাপ্লিকেশান এবং শুধুমাত্র emulators মাধ্যমে কোডের ইন্টারঅ্যাক্ট সঙ্গে কাজ। যদি আপনার অ্যাপটি এমন একটি সংস্থানের সাথে ইন্টারঅ্যাক্ট করার চেষ্টা করে যার জন্য একটি এমুলেটর চলছে না, সেই কোডটি ব্যর্থ হবে৷

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

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

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

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

নিচের মত ক্লাউড ফায়ারস্টোরের সাথে ইন্টারঅ্যাক্ট করতে আপনার ইন-অ্যাপ কনফিগারেশন বা পরীক্ষার ক্লাস সেট আপ করুন।

অ্যান্ড্রয়েড
        // 10.0.2.2 is the special IP address to connect to the 'localhost' of
        // the host computer from an Android emulator.
        FirebaseFirestore firestore = FirebaseFirestore.getInstance();
        firestore.useEmulator("10.0.2.2", 8080);

        FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
                .setPersistenceEnabled(false)
                .build();
        firestore.setFirestoreSettings(settings);
সুইফট
let settings = Firestore.firestore().settings
settings.host = "localhost:8080"
settings.isPersistenceEnabled = false 
settings.isSSLEnabled = false
Firestore.firestore().settings = settings

ওয়েব সংস্করণ 9

import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";

// firebaseApps previously initialized using initializeApp()
const db = getFirestore();
connectFirestoreEmulator(db, 'localhost', 8080);

ওয়েব সংস্করণ 8

// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("localhost", 8080);
}

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

অ্যাডমিন SDK

যখন Firebase এডমিন SDK আছে স্বয়ংক্রিয়ভাবে ক্লাউড Firestore এমুলেটর সাথে সংযোগ FIRESTORE_EMULATOR_HOST এনভায়রনমেন্ট ভেরিয়েবল সেট করা হয়:

export FIRESTORE_EMULATOR_HOST="localhost:8080"

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

অন্য কোনো পরিবেশ থেকে ক্লাউড ফায়ারস্টোর এমুলেটরের সাথে সংযোগ করার সময়, আপনাকে একটি প্রকল্প আইডি নির্দিষ্ট করতে হবে। আপনি জন্য একটি প্রকল্প আইডি পাস করতে পারেন initializeApp সরাসরি বা সেট GCLOUD_PROJECT এনভায়রনমেন্ট ভেরিয়েবল। মনে রাখবেন যে আপনাকে আপনার আসল ফায়ারবেস প্রকল্প আইডি ব্যবহার করতে হবে না; ক্লাউড Firestore এমুলেটর যতদিন এটি একটি হয়েছে যেমন কোনো প্রকল্পের আইডি গ্রহণ করবে, বৈধ বিন্যাস

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

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

প্রোডাকশন ফায়ারস্টোর ডাটাবেস ফ্লাশ করার জন্য কোনও প্ল্যাটফর্ম SDK পদ্ধতি সরবরাহ করে না, তবে Firestore এমুলেটর আপনাকে এই উদ্দেশ্যে বিশেষভাবে একটি REST শেষ পয়েন্ট দেয়, যা একটি টেস্ট ফ্রেমওয়ার্ক সেটআপ/টিয়ারডাউন ধাপ থেকে, একটি পরীক্ষার ক্লাস থেকে বা শেল থেকে (যেমন সঙ্গে curl ) আগের একটি পরীক্ষা বন্ধ লাথি করা হয়। আপনি কেবল এমুলেটর প্রক্রিয়া বন্ধ করার বিকল্প হিসাবে এই পদ্ধতিটি ব্যবহার করতে পারেন।

একটি যথাযথ পদ্ধতিতে একটি HTTP মুছে দিন অপারেশন, উদাহরণস্বরূপ সঞ্চালন, আপনার Firebase projectID সরবরাহ firestore-emulator-example , নিম্নলিখিত শেষবিন্দু করুন:

"http://localhost:8080/emulator/v1/projects/firestore-emulator-example/databases/(default)/documents"

স্বাভাবিকভাবেই, আপনার কোডটি REST নিশ্চিতকরণের জন্য অপেক্ষা করা উচিত যে ফ্লাশ শেষ হয়েছে বা ব্যর্থ হয়েছে৷

আপনি শেল থেকে এই অপারেশন করতে পারেন:

// Shell alternative…
$ curl -v -X DELETE "http://localhost:8080/emulator/v1/projects/firestore-emulator-example/databases/(default)/documents"

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

আমদানি এবং রপ্তানি তথ্য

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

firebase emulators:export ./dir

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

firebase emulators:start --import=./dir

আপনি শাটডাউনে রপ্তানি ডেটাতে এমুলেটর নির্দেশ করতে পারেন, পারেন রপ্তানি পথ উল্লেখ বা শুধু পথ প্রেরণ ব্যবহার --import পতাকা।

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

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

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

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

অনুরোধ মনিটর ব্যবহার করুন

ক্লাউড ফায়ারস্টোর এমুলেটর আপনাকে ফায়ারবেস নিরাপত্তা নিয়মের মূল্যায়ন ট্রেসিং সহ এমুলেটর স্যুট UI-তে ক্লায়েন্টের অনুরোধগুলি কল্পনা করতে দেয়।

প্রতিটি অনুরোধের জন্য বিস্তারিত মূল্যায়ন ক্রম দেখতে Firestore> অনুরোধগুলি ট্যাব খুলুন।

Firestore এমুলেটর নিরাপত্তা নিয়ম মূল্যায়ন দেখানো মনিটর অনুরোধ

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

আপনি আপনার প্রোটোটাইপে নিরাপত্তা বিধি যুক্ত করার সাথে সাথে আপনি স্থানীয় এমুলেটর স্যুট ডিবাগ সরঞ্জামগুলির সাথে তাদের ডিবাগ করতে পারেন।

পরীক্ষার একটি স্যুট চালানোর পরে, আপনি পরীক্ষার কভারেজ রিপোর্টগুলি অ্যাক্সেস করতে পারেন যা দেখায় যে আপনার প্রতিটি নিরাপত্তা নিয়ম কীভাবে মূল্যায়ন করা হয়েছে।

প্রতিবেদনগুলি পেতে, এমুলেটর চলাকালীন একটি উন্মুক্ত শেষ বিন্দুকে জিজ্ঞাসা করুন। একটি ব্রাউজার-বান্ধব সংস্করণের জন্য, নিম্নলিখিত URL ব্যবহার করুন:

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage.html

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

http://localhost:8080/emulator/v1/projects/<database_name>:ruleCoverage

এখানে, প্রতিবেদনের এইচটিএমএল সংস্করণ মূল্যায়নগুলিকে হাইলাইট করে যা অনির্ধারিত এবং শূন্য-মান ত্রুটিগুলি ফেলে দেয়:

কিভাবে ক্লাউড ফায়ারস্টোর এমুলেটর উৎপাদন থেকে আলাদা

ক্লাউড ফায়ারস্টোর এমুলেটর কিছু উল্লেখযোগ্য সীমাবদ্ধতার সাথে উত্পাদন পরিষেবার আচরণকে বিশ্বস্তভাবে প্রতিলিপি করার চেষ্টা করে।

লেনদেন

এমুলেটর বর্তমানে উৎপাদনে দেখা সমস্ত লেনদেন আচরণ বাস্তবায়ন করে না। আপনি যখন একটি নথিতে একাধিক সমসাময়িক লেখা জড়িত বৈশিষ্ট্যগুলি পরীক্ষা করছেন, তখন এমুলেটর লেখার অনুরোধগুলি সম্পূর্ণ করতে ধীর হতে পারে। কিছু ক্ষেত্রে, লকগুলি মুক্তি পেতে 30 সেকেন্ড পর্যন্ত সময় লাগতে পারে৷ প্রয়োজনে সেই অনুযায়ী পরীক্ষার সময়সীমা সামঞ্জস্য করার কথা বিবেচনা করুন।

সূচক

এমুলেটর যৌগিক সূচীগুলিকে ট্র্যাক করে না এবং এর পরিবর্তে কোন বৈধ ক্যোয়ারী চালাবে। আপনার কোন সূচীগুলির প্রয়োজন হবে তা নির্ধারণ করতে একটি বাস্তব ক্লাউড ফায়ারস্টোর উদাহরণের বিরুদ্ধে আপনার অ্যাপটি পরীক্ষা করা নিশ্চিত করুন৷

সীমা

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

তারপর কি?