Cloud Functions ব্যবহার শুরু করতে, এই টিউটোরিয়ালটি অনুসরণ করার চেষ্টা করুন, যা প্রয়োজনীয় সেটআপ কাজগুলো দিয়ে শুরু হয় এবং ধাপে ধাপে দুটি সম্পর্কিত ফাংশন তৈরি, পরীক্ষা ও স্থাপন করার পদ্ধতি দেখায়:
- একটি "বার্তা যোগ করুন" ফাংশন, যা এমন একটি URL প্রদান করে যা একটি টেক্সট ভ্যালু গ্রহণ করে এবং সেটিকে Cloud Firestore লিখে রাখে।
- একটি 'মেক আপারকেস' ফাংশন যা Cloud Firestore লেখার সময় সক্রিয় হয় এবং টেক্সটকে আপারকেসে রূপান্তর করে।
এই স্যাম্পলটির জন্য আমরা Cloud Firestore এবং HTTP-ট্রিগারড জাভাস্ক্রিপ্ট ফাংশন বেছে নিয়েছি, কারণ এই ব্যাকগ্রাউন্ড ট্রিগারগুলো Firebase Local Emulator Suite মাধ্যমে পুঙ্খানুপুঙ্খভাবে পরীক্ষা করা যায়। এই টুলসেটটি Realtime Database , পাবসাব, অথ এবং HTTP কলযোগ্য ট্রিগারগুলোকেও সমর্থন করে। অন্যান্য ধরনের ব্যাকগ্রাউন্ড ট্রিগার, যেমন Remote Config , টেস্টল্যাব এবং অ্যানালিটিক্স ট্রিগার, এই পৃষ্ঠায় বর্ণিত নয় এমন টুলসেট ব্যবহার করে ইন্টারেক্টিভভাবে পরীক্ষা করা যেতে পারে।
এই টিউটোরিয়ালের পরবর্তী অংশগুলোতে স্যাম্পলটি বিল্ড, টেস্ট এবং ডিপ্লয় করার জন্য প্রয়োজনীয় ধাপগুলো বিস্তারিতভাবে বর্ণনা করা হয়েছে। আপনি যদি শুধু কোডটি রান করে পরীক্ষা করতে চান, তাহলে সরাসরি ‘সম্পূর্ণ স্যাম্পল কোড পর্যালোচনা করুন’ অংশে চলে যান।
একটি ফায়ারবেস প্রজেক্ট তৈরি করুন
Firebase বা Cloud-এ নতুন
আপনি যদি Firebase বা Google Cloud এ নতুন হন, তাহলে এই ধাপগুলো অনুসরণ করুন।
আপনি যদি সম্পূর্ণ নতুন একটি Firebase প্রজেক্ট (এবং এর অন্তর্নিহিত Google Cloud প্রজেক্ট) তৈরি করতে চান, তাহলেও এই ধাপগুলো অনুসরণ করতে পারেন।
- Firebase কনসোলে সাইন ইন করুন।
- নতুন ফায়ারবেস প্রজেক্ট তৈরি করতে বাটনটিতে ক্লিক করুন।
টেক্সট ফিল্ডে একটি প্রজেক্টের নাম লিখুন।
আপনি যদি কোনো Google Cloud অর্গের অংশ হন, তাহলে আপনি ঐচ্ছিকভাবে বেছে নিতে পারেন কোন ফোল্ডারে আপনার প্রজেক্টটি তৈরি করবেন।
- অনুরোধ করা হলে, Firebase-এর শর্তাবলী পর্যালোচনা করে গ্রহণ করুন, তারপর ' চালিয়ে যান' (Continue ) বোতামে ক্লিক করুন।
- (ঐচ্ছিক) Firebase কনসোলে AI সহায়তা (যাকে "Gemini in Firebase" বলা হয়) সক্রিয় করুন, যা আপনাকে কাজ শুরু করতে এবং আপনার উন্নয়ন প্রক্রিয়াকে সুবিন্যস্ত করতে সাহায্য করতে পারে।
(ঐচ্ছিক) আপনার প্রোজেক্টের জন্য Google Analytics সেট আপ করুন, যা নিম্নলিখিত ফায়ারবেস প্রোডাক্টগুলো ব্যবহারের ক্ষেত্রে সর্বোত্তম অভিজ্ঞতা প্রদান করে: Firebase A/B Testing , Cloud Messaging , Crashlytics , In-App Messaging এবং Remote Config ( পার্সোনালাইজেশন সহ)।
একটি বিদ্যমান Google Analytics অ্যাকাউন্ট নির্বাচন করুন অথবা একটি নতুন অ্যাকাউন্ট তৈরি করুন। যদি আপনি একটি নতুন অ্যাকাউন্ট তৈরি করেন, তাহলে আপনার Analytics রিপোর্টিং লোকেশন নির্বাচন করুন, তারপর আপনার প্রোজেক্টের জন্য ডেটা শেয়ারিং সেটিংস এবং Google Analytics শর্তাবলী গ্রহণ করুন।
- প্রজেক্ট তৈরি করুন -এ ক্লিক করুন।
ফায়ারবেস আপনার প্রজেক্ট তৈরি করে, কিছু প্রাথমিক রিসোর্স সরবরাহ করে এবং গুরুত্বপূর্ণ এপিআইগুলো সক্রিয় করে। প্রক্রিয়াটি সম্পন্ন হলে, আপনাকে Firebase কনসোলে আপনার ফায়ারবেস প্রজেক্টের ওভারভিউ পৃষ্ঠায় নিয়ে যাওয়া হবে।
বিদ্যমান ক্লাউড প্রকল্প
বিদ্যমান Google Cloud প্রজেক্টে ফায়ারবেস ব্যবহার শুরু করতে চাইলে এই ধাপগুলো অনুসরণ করুন। বিদ্যমান Google Cloud প্রজেক্টে ফায়ারবেস যুক্ত করা সম্পর্কে আরও জানুন এবং এর সমস্যা সমাধান করুন।
- যে অ্যাকাউন্টটি দিয়ে আপনি বর্তমান Google Cloud প্রজেক্টে অ্যাক্সেস পান, সেটি দিয়ে Firebase কনসোলে সাইন ইন করুন।
- নতুন ফায়ারবেস প্রজেক্ট তৈরি করতে বাটনটিতে ক্লিক করুন।
- পেজের একদম নিচে, ‘Add Firebase to Google Cloud project’-এ ক্লিক করুন।
- টেক্সট ফিল্ডে বিদ্যমান প্রজেক্টটির নাম টাইপ করা শুরু করুন এবং তারপরে প্রদর্শিত তালিকা থেকে প্রজেক্টটি নির্বাচন করুন।
- প্রজেক্ট খুলুন -এ ক্লিক করুন।
- অনুরোধ করা হলে, Firebase-এর শর্তাবলী পর্যালোচনা করে গ্রহণ করুন, তারপর ' চালিয়ে যান' (Continue ) বোতামে ক্লিক করুন।
- (ঐচ্ছিক) Firebase কনসোলে AI সহায়তা (যাকে "Gemini in Firebase" বলা হয়) সক্রিয় করুন, যা আপনাকে কাজ শুরু করতে এবং আপনার উন্নয়ন প্রক্রিয়াকে সুবিন্যস্ত করতে সাহায্য করতে পারে।
(ঐচ্ছিক) আপনার প্রোজেক্টের জন্য Google Analytics সেট আপ করুন, যা নিম্নলিখিত ফায়ারবেস প্রোডাক্টগুলো ব্যবহারের ক্ষেত্রে সর্বোত্তম অভিজ্ঞতা প্রদান করে: Firebase A/B Testing , Cloud Messaging , Crashlytics , In-App Messaging এবং Remote Config ( পার্সোনালাইজেশন সহ)।
একটি বিদ্যমান Google Analytics অ্যাকাউন্ট নির্বাচন করুন অথবা একটি নতুন অ্যাকাউন্ট তৈরি করুন। যদি আপনি একটি নতুন অ্যাকাউন্ট তৈরি করেন, তাহলে আপনার Analytics রিপোর্টিং লোকেশন নির্বাচন করুন, তারপর আপনার প্রোজেক্টের জন্য ডেটা শেয়ারিং সেটিংস এবং Google Analytics শর্তাবলী গ্রহণ করুন।
- ফায়ারবেস যোগ করুন -এ ক্লিক করুন।
ফায়ারবেস আপনার বিদ্যমান প্রজেক্টে এটি যুক্ত করে । প্রক্রিয়াটি সম্পন্ন হলে, আপনাকে Firebase কনসোলে আপনার ফায়ারবেস প্রজেক্টের ওভারভিউ পেজে নিয়ে যাওয়া হবে।
Node.js এবং Firebase CLI সেট আপ করুন
ফাংশন লেখার জন্য আপনার একটি Node.js এনভায়রনমেন্ট এবং Cloud Functions রানটাইমে ফাংশন ডিপ্লয় করার জন্য Firebase CLI প্রয়োজন হবে। Node.js এবং npm ইনস্টল করার জন্য Node Version Manager ব্যবহার করার পরামর্শ দেওয়া হয়।
একবার আপনার Node.js এবং npm ইনস্টল হয়ে গেলে, আপনার পছন্দের পদ্ধতিতে Firebase CLI ইনস্টল করুন । npm-এর মাধ্যমে CLI ইনস্টল করতে, ব্যবহার করুন:
npm install -g firebase-tools
এটি বিশ্বব্যাপী উপলব্ধ firebase কমান্ডটি ইনস্টল করে। যদি কমান্ডটি ব্যর্থ হয়, তাহলে আপনাকে npm পারমিশন পরিবর্তন করতে হতে পারে। firebase-tools এর সর্বশেষ সংস্করণে আপডেট করতে, একই কমান্ডটি পুনরায় চালান।
আপনার প্রকল্পটি শুরু করুন
যখন আপনি Cloud Functions জন্য Firebase এসডিকে (Firebase SDK for Cloud Functions) ইনিশিয়ালাইজ করেন, তখন আপনি ডিপেন্ডেন্সি এবং কিছু ন্যূনতম নমুনা কোড সহ একটি খালি প্রজেক্ট তৈরি করেন এবং ফাংশন কম্পোজ করার জন্য টাইপস্ক্রিপ্ট (TypeScript) বা জাভাস্ক্রিপ্ট (JavaScript) বেছে নেন। এই টিউটোরিয়ালের জন্য, আপনাকে Cloud Firestore ) ইনিশিয়ালাইজ করতে হবে।
আপনার প্রকল্পটি শুরু করতে:
ব্রাউজারের মাধ্যমে লগ ইন করতে এবং Firebase CLI-কে প্রমাণীকরণ করতে
firebase loginচালান।আপনার ফায়ারবেস প্রজেক্ট ডিরেক্টরিতে যান।
firebase init firestoreচালান। এই টিউটোরিয়ালের জন্য, ফায়ারস্টোর রুলস এবং ইনডেক্স ফাইলের জন্য অনুরোধ করা হলে আপনি ডিফল্ট মানগুলো গ্রহণ করতে পারেন। আপনি যদি এই প্রজেক্টে এখনও Cloud Firestore ব্যবহার না করে থাকেন, তাহলে `Get started with Cloud Firestore অংশে বর্ণিত পদ্ধতি অনুযায়ী আপনাকে ফায়ারস্টোরের জন্য একটি স্টার্টিং মোড এবং লোকেশনও নির্বাচন করতে হবে।firebase init functionsকমান্ডটি চালান। CLI আপনাকে একটি বিদ্যমান কোডবেস বেছে নিতে অথবা একটি নতুন কোডবেস শুরু করে তার নাম দিতে বলবে। যখন আপনি সবে শুরু করছেন, তখন ডিফল্ট অবস্থানে একটিমাত্র কোডবেসই যথেষ্ট; পরবর্তীতে, আপনার ইমপ্লিমেন্টেশন প্রসারিত হলে, আপনি ফাংশনগুলোকে একাধিক কোডবেসে সাজাতে চাইতে পারেন।ভাষা সমর্থনের জন্য CLI আপনাকে নিম্নলিখিত বিকল্পগুলি প্রদান করে:
- জাভাস্ক্রিপ্ট
- পাইথন
- টাইপস্ক্রিপ্ট সম্পর্কে আরও তথ্যের জন্য "টাইপস্ক্রিপ্ট দিয়ে ফাংশন লিখুন" দেখুন।
এই টিউটোরিয়ালের জন্য জাভাস্ক্রিপ্ট নির্বাচন করুন।
CLI আপনাকে npm দিয়ে ডিপেন্ডেন্সি ইনস্টল করার একটি অপশন দেয়। আপনি যদি অন্য কোনো উপায়ে ডিপেন্ডেন্সি ম্যানেজ করতে চান, তবে এই অপশনটি প্রত্যাখ্যান করা নিরাপদ। তবে, যদি আপনি তা করেন, তাহলে আপনার ফাংশনগুলো এমুলেট বা ডিপ্লয় করার আগে
npm installরান করতে হবে।
এই কমান্ডগুলো সফলভাবে সম্পন্ন হওয়ার পর, আপনার প্রোজেক্টের কাঠামোটি দেখতে এইরকম হবে:
myproject
+- .firebaserc # Hidden file that helps you quickly switch between
| # projects with `firebase use`
|
+- firebase.json # Describes properties for your project
|
+- functions/ # Directory containing all your functions code
|
+- .eslintrc.json # Optional file containing rules for JavaScript linting.
|
+- package.json # npm package file describing your Cloud Functions code
|
+- index.js # main source file for your Cloud Functions code
|
+- node_modules/ # directory where your dependencies (declared in
# package.json) are installed
ইনিশিয়ালাইজেশনের সময় তৈরি হওয়া package.json ফাইলটিতে একটি গুরুত্বপূর্ণ কী (key) থাকে: "engines": {"node": "16"} । এটি ফাংশন লেখা এবং ডেপ্লয় করার জন্য আপনার Node.js ভার্সন নির্দিষ্ট করে। আপনি অন্যান্য সমর্থিত ভার্সনও নির্বাচন করতে পারেন।
প্রয়োজনীয় মডিউলগুলো ইম্পোর্ট করুন এবং অ্যাপটি চালু করুন।
সেটআপের কাজগুলো সম্পন্ন করার পর, আপনি সোর্স ডিরেক্টরি খুলতে পারেন এবং পরবর্তী বিভাগগুলোতে বর্ণিত পদ্ধতি অনুযায়ী কোড যোগ করা শুরু করতে পারেন। এই স্যাম্পলটির জন্য, আপনার প্রজেক্টে অবশ্যই Node require স্টেটমেন্ট ব্যবহার করে Cloud Functions এবং Admin SDK মডিউলগুলো ইম্পোর্ট করতে হবে। আপনার index.js ফাইলে নিচের মতো লাইনগুলো যোগ করুন:
// The Cloud Functions for Firebase SDK to create Cloud Functions and set up triggers. const functions = require('firebase-functions/v1'); // The Firebase Admin SDK to access Firestore. const admin = require("firebase-admin"); admin.initializeApp();
এই লাইনগুলো firebase-functions এবং firebase-admin মডিউলগুলো লোড করে এবং একটি admin অ্যাপ ইনস্ট্যান্স চালু করে, যেখান থেকে Cloud Firestore পরিবর্তন করা যায়। যেখানেই অ্যাডমিন এসডিকে সাপোর্ট পাওয়া যায়, যেমনটা FCM , Authentication এবং Firebase Realtime Database ক্ষেত্রে, সেখানেই এটি Cloud Functions ব্যবহার করে ফায়ারবেসকে ইন্টিগ্রেট করার একটি শক্তিশালী উপায় প্রদান করে।
আপনি যখন আপনার প্রজেক্ট শুরু করেন, তখন Firebase CLI স্বয়ংক্রিয়ভাবে Firebase এবং Firebase SDK for Cloud Functions নোড মডিউলগুলো ইনস্টল করে। আপনার প্রজেক্টে থার্ড-পার্টি লাইব্রেরি যোগ করতে, আপনি package.json পরিবর্তন করে npm install চালাতে পারেন। আরও তথ্যের জন্য, Handle Dependencies দেখুন।
addMessage() ফাংশনটি যোগ করুন
addMessage() ফাংশনের জন্য, index.js এ এই লাইনগুলো যোগ করুন:
// Take the text parameter passed to this HTTP endpoint and insert it into // Firestore under the path /messages/:documentId/original exports.addMessage = functions.https.onRequest(async (req, res) => { // Grab the text parameter. const original = req.query.text; // Push the new message into Firestore using the Firebase Admin SDK. const writeResult = await admin .firestore() .collection("messages") .add({ original: original }); // Send back a message that we've successfully written the message res.json({ result: `Message with ID: ${writeResult.id} added.` }); });
` addMessage() ` ফাংশনটি একটি HTTP এন্ডপয়েন্ট। এই এন্ডপয়েন্টে করা যেকোনো অনুরোধের ফলে ExpressJS-স্টাইলের `Request` এবং `Response` অবজেক্ট তৈরি হয়, যা onRequest() কলব্যাকে পাঠানো হয়।
HTTP ফাংশনগুলো সিনক্রোনাস ( কলযোগ্য ফাংশনের মতো), তাই আপনার যত দ্রুত সম্ভব একটি প্রতিক্রিয়া পাঠানো উচিত এবং Cloud Firestore ব্যবহার করে কাজ স্থগিত রাখা উচিত। addMessage() HTTP ফাংশনটি HTTP এন্ডপয়েন্টে একটি টেক্সট ভ্যালু পাঠায় এবং এটিকে /messages/:documentId/original পাথের অধীনে ডাটাবেসে প্রবেশ করায়।
makeUppercase() ফাংশনটি যোগ করুন
makeUppercase() ফাংশনের জন্য, index.js এ এই লাইনগুলো যোগ করুন:
// Listens for new messages added to /messages/:documentId/original and creates an // uppercase version of the message to /messages/:documentId/uppercase exports.makeUppercase = functions.firestore .document("/messages/{documentId}") .onCreate((snap, context) => { // Grab the current value of what was written to Firestore. const original = snap.data().original; // Access the parameter `{documentId}` with `context.params` functions.logger.log("Uppercasing", context.params.documentId, original); const uppercase = original.toUpperCase(); // You must return a Promise when performing asynchronous tasks inside a Functions such as // writing to Firestore. // Setting an 'uppercase' field in Firestore document returns a Promise. return snap.ref.set({ uppercase }, { merge: true }); });
Cloud Firestore লেখার সময় makeUppercase() ফাংশনটি কার্যকর হয়। ref.set ফাংশনটি নির্ধারণ করে কোন ডকুমেন্টের উপর লিসেন করতে হবে। পারফরম্যান্সের কারণে, আপনার যতটা সম্ভব সুনির্দিষ্ট হওয়া উচিত।
বন্ধনী—যেমন, {documentId} —‘প্যারামিটার’-কে ঘিরে রাখে, যা হলো এমন ওয়াইল্ডকার্ড যা কলব্যাকে তাদের মিলে যাওয়া ডেটা প্রকাশ করে।
যখনই নতুন বার্তা যোগ করা হয়, Cloud Firestore onCreate() কলব্যাকটি ট্রিগার করে।
Cloud Firestore ইভেন্টের মতো ইভেন্ট-চালিত ফাংশনগুলো অ্যাসিঙ্ক্রোনাস। কলব্যাক ফাংশনটির অবশ্যই একটি null , একটি Object, অথবা একটি Promise রিটার্ন করা উচিত। আপনি যদি কিছু রিটার্ন না করেন, তাহলে ফাংশনটির টাইম আউট হয়ে যায়, যা একটি ত্রুটির সংকেত দেয় এবং এটি পুনরায় চেষ্টা করা হয়। Sync, Async, এবং Promises দেখুন।
আপনার ফাংশনগুলির সম্পাদন অনুকরণ করুন
Firebase Local Emulator Suite আপনাকে কোনো ফায়ারবেস প্রজেক্টে ডেপ্লয় করার পরিবর্তে আপনার লোকাল মেশিনে অ্যাপ তৈরি ও পরীক্ষা করার সুযোগ দেয়। ডেভেলপমেন্টের সময় লোকাল টেস্টিং জোরালোভাবে সুপারিশ করা হয়, কারণ এটি কোডিং ত্রুটির ঝুঁকি কমিয়ে দেয়, যা প্রোডাকশন পরিবেশে সম্ভাব্য খরচের কারণ হতে পারে (উদাহরণস্বরূপ, একটি ইনফিনিট লুপ)।
আপনার ফাংশনগুলো অনুকরণ করতে:
firebase emulators:startকমান্ডটি চালান এবং Emulator Suite UI এর URL-এর জন্য আউটপুটটি দেখুন। এটি ডিফল্টভাবে `localhost:4000` হয় , কিন্তু আপনার মেশিনে এটি অন্য কোনো পোর্টে হোস্ট করা থাকতে পারে। Emulator Suite UI খোলার জন্য আপনার ব্রাউজারে সেই URL-টি লিখুন।firebase emulators:startকমান্ডের আউটপুটেaddMessage()` HTTP ফাংশনের URL-টি দেখুন। এটি দেখতেhttp://localhost:5001/MY_PROJECT/us-central1/addMessageএর মতো হবে, তবে পার্থক্য হলো:-
MY_PROJECTপরিবর্তে আপনার প্রজেক্ট আইডি ব্যবহৃত হবে। - আপনার স্থানীয় মেশিনে পোর্টটি ভিন্ন হতে পারে।
-
ফাংশনের URL-এর শেষে
?text=uppercasemeকোয়েরি স্ট্রিংটি যোগ করুন। এটি দেখতে অনেকটা এইরকম হবে:http://localhost:5001/MY_PROJECT/us-central1/addMessage?text=uppercaseme। ঐচ্ছিকভাবে, আপনি "uppercaseme" বার্তাটি পরিবর্তন করে একটি নিজস্ব বার্তা দিতে পারেন।আপনার ব্রাউজারের একটি নতুন ট্যাবে URL-টি খুলে একটি নতুন বার্তা তৈরি করুন।
Emulator Suite UI তে ফাংশনগুলোর প্রভাব দেখুন:
লগস ট্যাবে, আপনি নতুন লগ দেখতে পাবেন যা নির্দেশ করবে যে
addMessage()এবংmakeUppercase()ফাংশনগুলো চলেছে:i functions: Beginning execution of "addMessage"i functions: Beginning execution of "makeUppercase"ফায়ারস্টোর ট্যাবে, আপনি একটি ডকুমেন্ট দেখতে পাবেন যেখানে আপনার মূল বার্তার পাশাপাশি সেটির বড় হাতের অক্ষরে লেখা সংস্করণটিও থাকবে (যদি বার্তাটি মূলত "uppercaseme" হয়ে থাকে, তবে আপনি "UPPERCASEME" দেখতে পাবেন)।
প্রোডাকশন পরিবেশে ফাংশনগুলি স্থাপন করুন
একবার এমুলেটরে আপনার ফাংশনগুলো পছন্দমতো কাজ করা শুরু করলে, আপনি সেগুলোকে প্রোডাকশন এনভায়রনমেন্টে ডেপ্লয়, টেস্ট এবং রান করার জন্য অগ্রসর হতে পারেন। মনে রাখবেন যে, Node.js 14 রানটাইম এনভায়রনমেন্টে ডেপ্লয় করার জন্য আপনার প্রজেক্টটি অবশ্যই ব্লেজ প্রাইসিং প্ল্যানের অন্তর্ভুক্ত থাকতে হবে। Cloud Functions প্রাইসিং দেখুন।
টিউটোরিয়ালটি সম্পূর্ণ করতে, আপনার ফাংশনগুলো ডিপ্লয় করুন এবং তারপর makeUppercase() ট্রিগার করার জন্য addMessage() এক্সিকিউট করুন।
আপনার ফাংশনগুলো ডিপ্লয় করতে এই কমান্ডটি চালান:
firebase deploy --only functions
এই কমান্ডটি চালানোর পর, Firebase CLI যেকোনো HTTP ফাংশন এন্ডপয়েন্টের URL আউটপুট করে। আপনার টার্মিনালে, আপনি নিম্নলিখিতের মতো একটি লাইন দেখতে পাবেন:
Function URL (addMessage): https://us-central1-MY_PROJECT.cloudfunctions.net/addMessageURL-টিতে আপনার প্রজেক্ট আইডি এবং HTTP ফাংশনের জন্য একটি অঞ্চল অন্তর্ভুক্ত থাকে। যদিও এখন এটি নিয়ে আপনার চিন্তার প্রয়োজন নেই, নেটওয়ার্ক ল্যাটেন্সি কমানোর জন্য কিছু প্রোডাকশন HTTP ফাংশনে একটি অবস্থান নির্দিষ্ট করে দেওয়া উচিত।
যদি আপনি "প্রকল্পে অ্যাক্সেস অনুমোদন করতে অক্ষম" এর মতো অ্যাক্সেস ত্রুটির সম্মুখীন হন, তাহলে আপনার প্রকল্পের অ্যালিয়াসিং পরীক্ষা করে দেখুন।
CLI দ্বারা আউটপুট করা
addMessage()URL ব্যবহার করে, একটি টেক্সট কোয়েরি প্যারামিটার যোগ করুন এবং এটি একটি ব্রাউজারে খুলুন:https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage?text=uppercasemetooফাংশনটি কার্যকর হয় এবং ব্রাউজারকে ডেটাবেসের সেই অবস্থানে Firebase কনসোলে পুনঃনির্দেশিত করে, যেখানে টেক্সট স্ট্রিংটি সংরক্ষিত আছে। এই রাইট ইভেন্টটি
makeUppercase()ট্রিগার করে, যা স্ট্রিংটির একটি আপারকেস সংস্করণ লিখে দেয়।
ফাংশনগুলো ডেপ্লয় এবং এক্সিকিউট করার পর, আপনি Google Cloud কনসোলে লগ দেখতে পারবেন। ডেভেলপমেন্ট বা প্রোডাকশন পর্যায়ে ফাংশন ডিলিট করার প্রয়োজন হলে, Firebase CLI) ব্যবহার করুন।
প্রোডাকশনে, আপনি ফাংশনের পারফরম্যান্স অপ্টিমাইজ করতে এবং খরচ নিয়ন্ত্রণ করতে ন্যূনতম ও সর্বোচ্চ সংখ্যক ইনস্ট্যান্স চালানোর ব্যবস্থা করতে পারেন। এই রানটাইম অপশনগুলো সম্পর্কে আরও তথ্যের জন্য ‘স্কেলিং আচরণ নিয়ন্ত্রণ’ দেখুন।
সম্পূর্ণ নমুনা কোড পর্যালোচনা করুন
এখানে functions/index.js সম্পূর্ণ সংস্করণ দেওয়া হলো, যেখানে addMessage() এবং makeUppercase() ফাংশনগুলো রয়েছে। এই ফাংশনগুলোর মাধ্যমে আপনি একটি HTTP এন্ডপয়েন্টে প্যারামিটার পাঠাতে পারবেন, যা Cloud Firestore একটি ভ্যালু লিখে রাখে এবং তারপর স্ট্রিংটির সমস্ত অক্ষরকে আপারকেস করে সেটিকে রূপান্তরিত করে।
// The Cloud Functions for Firebase SDK to create Cloud Functions and set up triggers. const functions = require('firebase-functions/v1'); // The Firebase Admin SDK to access Firestore. const admin = require("firebase-admin"); admin.initializeApp(); // Take the text parameter passed to this HTTP endpoint and insert it into // Firestore under the path /messages/:documentId/original exports.addMessage = functions.https.onRequest(async (req, res) => { // Grab the text parameter. const original = req.query.text; // Push the new message into Firestore using the Firebase Admin SDK. const writeResult = await admin .firestore() .collection("messages") .add({ original: original }); // Send back a message that we've successfully written the message res.json({ result: `Message with ID: ${writeResult.id} added.` }); }); // Listens for new messages added to /messages/:documentId/original and creates an // uppercase version of the message to /messages/:documentId/uppercase exports.makeUppercase = functions.firestore .document("/messages/{documentId}") .onCreate((snap, context) => { // Grab the current value of what was written to Firestore. const original = snap.data().original; // Access the parameter `{documentId}` with `context.params` functions.logger.log("Uppercasing", context.params.documentId, original); const uppercase = original.toUpperCase(); // You must return a Promise when performing asynchronous tasks inside a Functions such as // writing to Firestore. // Setting an 'uppercase' field in Firestore document returns a Promise. return snap.ref.set({ uppercase }, { merge: true }); });
পরবর্তী পদক্ষেপ
এই ডকুমেন্টেশনে, আপনি Cloud Functions জন্য ফাংশনগুলি কীভাবে পরিচালনা করবেন এবং Cloud Functions দ্বারা সমর্থিত সমস্ত ইভেন্ট টাইপ কীভাবে হ্যান্ডেল করবেন সে সম্পর্কে আরও জানতে পারবেন।
Cloud Functions সম্পর্কে আরও জানতে, আপনি নিম্নলিখিত কাজগুলোও করতে পারেন:
- Cloud Functions ব্যবহার সম্পর্কে পড়ুন।
- Cloud Functions কোডল্যাবটি চেষ্টা করে দেখুন।
- গিটহাবে কোডের নমুনাগুলো পর্যালোচনা করুন এবং চালান।