Join us for Firebase Summit on November 10, 2021. Tune in to learn how Firebase can help you accelerate app development, release with confidence, and scale with ease. Register

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

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

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

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

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

স্থানীয় এমুলেটর সুইট বাস্তব 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);
iOS - সুইফট
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);
}
ওয়েব
// Initialize your Web app as described in the Get started for Web
// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("localhost", 8080);
}

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

অ্যাডমিন এসডিকে

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

export FIRESTORE_EMULATOR_HOST="localhost:8080"

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

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

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

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

প্রোডাকশন ফায়ারস্টোর ডাটাবেস ফ্লাশ করার জন্য কোন প্ল্যাটফর্ম SDK পদ্ধতি প্রদান করে না, কিন্তু ফায়ারস্টোর এমুলেটর আপনাকে এই উদ্দেশ্যে বিশেষভাবে একটি 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> অনুরোধগুলি ট্যাব খুলুন।

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

নিয়ম মূল্যায়ন প্রতিবেদন ভিজ্যুয়ালাইজ করুন

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

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

রিপোর্ট পেতে, এমুলেটর চলমান অবস্থায় একটি এক্সপোজড এন্ডপয়েন্ট জিজ্ঞাসা করুন। একটি ব্রাউজার-বান্ধব সংস্করণের জন্য, নিম্নলিখিত URL টি ব্যবহার করুন:

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

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

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

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

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

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

লেনদেন

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

সূচী

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

সীমা

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

তারপর কি?