শুরু করা যাক: আপনার প্রথম ফাংশন (১ম জেনারেশন) লেখা, পরীক্ষা করা ও ডেপ্লয় করা

Cloud Functions ব্যবহার শুরু করতে, এই টিউটোরিয়ালটি দেখুন, যেখানে প্রয়োজনীয় সেট-আপ টাস্ক দিয়ে শুরু করে, দুটি সম্পর্কিত ফাংশন তৈরি, পরীক্ষা ও ডিপ্লয় করার মাধ্যমে কাজ করা হয়:

  • "মেসেজ যোগ করুন" ফাংশন যা এমন একটি URL দেখায় যা টেক্সট ভ্যালু গ্রহণ করে এবং এটি Cloud Firestore-এ লেখে।
  • "বড় হাতের অক্ষরে পরিবর্তন করুন" ফাংশন যা Cloud Firestore-এ লেখার সময় ট্রিগার হয় এবং টেক্সট বড় হাতের অক্ষরে পরিবর্তন করে।

আমরা এই স্যাম্পেলের জন্য Cloud Firestore এবং HTTP-ট্রিগার করা জাভাস্ক্রিপ্ট ফাংশন বেছে নিয়েছি, কারণ এইসব ব্যাকগ্রাউন্ড ট্রিগার Firebase Local Emulator Suite-এর মাধ্যমে সম্পূর্ণভাবে পরীক্ষা করা যেতে পারে। এই টুলসেট Realtime Database, PubSub, Auth এবং HTTP কল করা যায় এমন ট্রিগারও সাপোর্ট করে। অন্যান্য ধরনের ব্যাকগ্রাউন্ড ট্রিগার যেমন Remote Config, TestLab এবং Analytics ট্রিগার, এই পৃষ্ঠায় বর্ণনা করা হয়নি এমন টুলসেট ব্যবহার করে ইন্টার‍্যাক্টিভভাবে পরীক্ষা করা যেতে পারে।

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

Firebase প্রোজেক্ট তৈরি করা

Firebase বা Cloud-এ নতুন

আপনি Firebase বা Google Cloud-এ নতুন হলে, এইসব ধাপ অনুসরণ করুন।
আপনি সম্পূর্ণ নতুন Firebase প্রোজেক্ট (এবং এর সাথে সম্পর্কিত Google Cloud প্রোজেক্ট) তৈরি করতে চাইলে, এইসব ধাপ অনুসরণ করতে পারেন।

  1. Firebase কনসোলে সাইন-ইন করুন।
  2. নতুন Firebase প্রোজেক্ট তৈরি করতে বোতামে ক্লিক করুন।
  3. টেক্সট ফিল্ডে, প্রোজেক্টের নাম লিখুন।

    আপনি কোনও Google Cloud সংস্থার অংশ হলে, ঐচ্ছিকভাবে বেছে নিতে পারবেন যে কোন ফোল্ডারে আপনার প্রোজেক্ট তৈরি করবেন।

  4. প্রম্পট করা হলে, Firebase-এর শর্তাবলী পর্যালোচনা করে সম্মতি দিন, তারপর চালিয়ে যান বিকল্পে ক্লিক করুন।
  5. (ঐচ্ছিক) Firebase কনসোলে AI সহায়তা চালু করুন (যাকে "Firebase-এ Gemini" বলা হয়), যা আপনাকে শুরু করতে এবং আপনার ডেভেলপমেন্ট প্রসেসকে স্ট্রিমলাইন করতে সাহায্য করতে পারে।
  6. (ঐচ্ছিক) আপনার প্রোজেক্টের জন্য Google Analytics সেট-আপ করুন, যা এইসব Firebase প্রোডাক্ট ব্যবহার করে সেরা অভিজ্ঞতা প্রদান করে: Firebase A/B Testing, Cloud Messaging, Crashlytics, In-App Messaging এবং Remote Config (এর মধ্যে পছন্দমতো সেট-আপ করা অন্তর্ভুক্ত)।

    আগে থেকে থাকা কোনও Google Analytics অ্যাকাউন্ট বেছে নিন অথবা নতুন অ্যাকাউন্ট তৈরি করুন। আপনি নতুন অ্যাকাউন্ট তৈরি করলে, আপনার Analytics রিপোর্টিং লোকেশন বেছে নিন, তারপর আপনার প্রোজেক্টের জন্য ডেটা শেয়ারিং সেটিংস এবং Google Analytics শর্তাবলী গ্রহণ করুন।

  7. প্রোজেক্ট তৈরি করুন বিকল্পে ক্লিক করুন।

Firebase আপনার প্রোজেক্ট তৈরি করে, কিছু প্রাথমিক রিসোর্স প্রদান করে এবং গুরুত্বপূর্ণ API চালু করে। প্রসেস সম্পূর্ণ হলে, আপনাকে Firebase কনসোলে আপনার Firebase প্রোজেক্টের ওভারভিউ পৃষ্ঠায় নিয়ে যাওয়া হবে।

আগে থেকে থাকা ক্লাউড প্রোজেক্ট

আগে থেকে আছে এমন Google Cloud প্রোজেক্টের সাথে Firebase ব্যবহার শুরু করতে চাইলে, এইসব ধাপ অনুসরণ করুন। আগে থেকে আছে এমন Google Cloud প্রোজেক্টে "Firebase যোগ করা" সম্পর্কে আরও জানুন এবং সমস্যার সমাধান করুন।

  1. যে অ্যাকাউন্ট দিয়ে আপনি আগে থেকে থাকা Google Cloud প্রোজেক্ট অ্যাক্সেস করতে পারবেন, সেটি দিয়ে Firebase কনসোলে সাইন-ইন করুন।
  2. নতুন Firebase প্রোজেক্ট তৈরি করতে বোতামে ক্লিক করুন।
  3. পৃষ্ঠার একদম নিচে, Google Cloud প্রোজেক্টে Firebase যোগ করুন বিকল্পে ক্লিক করুন।
  4. টেক্সট ফিল্ডে, আগে থেকে থাকা প্রোজেক্টের প্রোজেক্টের নাম লেখা শুরু করুন এবং তারপরে দেখানো তালিকা থেকে প্রোজেক্টটি বেছে নিন।
  5. প্রোজেক্ট খুলুন বিকল্পে ক্লিক করুন।
  6. প্রম্পট করা হলে, Firebase-এর শর্তাবলী পর্যালোচনা করে সম্মতি দিন, তারপর চালিয়ে যান বিকল্পে ক্লিক করুন।
  7. (ঐচ্ছিক) Firebase কনসোলে AI সহায়তা চালু করুন (যাকে "Firebase-এ Gemini" বলা হয়), যা আপনাকে শুরু করতে এবং আপনার ডেভেলপমেন্ট প্রসেসকে স্ট্রিমলাইন করতে সাহায্য করতে পারে।
  8. (ঐচ্ছিক) আপনার প্রোজেক্টের জন্য Google Analytics সেট-আপ করুন, যা এইসব Firebase প্রোডাক্ট ব্যবহার করে সেরা অভিজ্ঞতা প্রদান করে: Firebase A/B Testing, Cloud Messaging, Crashlytics, In-App Messaging এবং Remote Config (এর মধ্যে পছন্দমতো সেট-আপ করা অন্তর্ভুক্ত)।

    আগে থেকে থাকা কোনও Google Analytics অ্যাকাউন্ট বেছে নিন অথবা নতুন অ্যাকাউন্ট তৈরি করুন। আপনি নতুন অ্যাকাউন্ট তৈরি করলে, আপনার Analytics রিপোর্টিং লোকেশন বেছে নিন, তারপর আপনার প্রোজেক্টের জন্য ডেটা শেয়ারিং সেটিংস এবং Google Analytics শর্তাবলী গ্রহণ করুন।

  9. Firebase যোগ করুন বিকল্পে ক্লিক করুন।

Firebase আপনার আগে থেকে থাকা প্রোজেক্টে Firebase যোগ করে। প্রসেস সম্পূর্ণ হলে, আপনাকে Firebase কনসোলে আপনার Firebase প্রোজেক্টের ওভারভিউ পৃষ্ঠায় নিয়ে যাওয়া হবে।

Node.js ও Firebase CLI সেট-আপ করা

ফাংশন লেখার জন্য আপনার Node.js এনভায়রনমেন্টের প্রয়োজন হবে, এবং Cloud Functions রানটাইমে ফাংশন ডিপ্লয় করার জন্য আপনার Firebase CLI প্রয়োজন হবে। Node.js ও npm ইনস্টল করার জন্য, Node ভার্সন ম্যানেজার ব্যবহার করার সাজেশন দেওয়া হয়।

Node.js ও npm ইনস্টল করা হয়ে গেলে, আপনার পছন্দের পদ্ধতি ব্যবহার করে Firebase CLI ইনস্টল করুন। npm-এর মাধ্যমে CLI ইনস্টল করতে, এটি ব্যবহার করুন:

npm install -g firebase-tools

এটি বিশ্বব্যাপী উপলভ্য firebase কমান্ড ইনস্টল করে। কমান্ড কাজ না করলে, আপনাকে হয়ত npm-এর অনুমতি পরিবর্তন করতে হবে। firebase-tools-এর লেটেস্ট ভার্সনে আপডেট করতে, একই কমান্ড আবার রান করুন।

আপনার প্রোজেক্ট শুরু করুন

আপনি Cloud Functions-এর জন্য Firebase SDK ইনিশিয়ালাইজ করলে, আপনি ডিপেন্ডেন্সি ও কিছু ন্যূনতম স্যাম্পেল কোড সহ একটি খালি প্রোজেক্ট তৈরি করেন এবং ফাংশন কম্পোজ করার জন্য TypeScript বা JavaScript বেছে নেন। এই টিউটোরিয়ালের জন্য, আপনাকে Cloud Firestore-ও ইনিশিয়ালাইজ করতে হবে।

আপনার প্রোজেক্ট শুরু করতে:

  1. ব্রাউজারের মাধ্যমে লগ-ইন করতে এবং Firebase CLI যাচাই করতে firebase login রান করুন।

  2. আপনার Firebase প্রোজেক্ট ডিরেক্টরিতে যান।

  3. firebase init firestore রান করুন। এই টিউটোরিয়ালের জন্য, Firestore নিয়ম ও ইন্ডেক্স ফাইলের জন্য প্রম্পট করা হলে, আপনি ডিফল্ট মান গ্রহণ করতে পারেন। আপনি যদি এখনও এই প্রোজেক্টে Cloud Firestore ব্যবহার না করে থাকেন, তাহলে আপনাকে Firestore-এর জন্য একটি স্টার্টিং মোড এবং লোকেশনও বেছে নিতে হবে, যেমনটি Cloud Firestore-এর সাথে শুরু করুন-এ বর্ণনা করা হয়েছে।

  4. firebase init functions রান করুন। CLI আপনাকে আগে থেকে থাকা কোনও কোডবেস বেছে নিতে অথবা নতুন একটি শুরু করে সেটির নাম দিতে প্রম্পট করে। আপনি যখন সবে শুরু করছেন, ডিফল্ট লোকেশনে একটি একক কোডবেস যথেষ্ট; পরে, আপনার ইমপ্লিমেন্টেশন প্রসারিত হওয়ার সাথে সাথে, আপনি কোডবেসে ফাংশন সাজাতে চাইতে পারেন।

  5. CLI আপনাকে ভাষা সংক্রান্ত সহায়তার জন্য নিম্নলিখিত বিকল্পগুলি দেয়:

    এই টিউটোরিয়ালের জন্য, জাভাস্ক্রিপ্ট বিকল্প বেছে নিন।

  6. 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 ফাইলে একটি গুরুত্বপূর্ণ কী আছে: "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 { initializeApp } = require("firebase-admin/app");
const { getFirestore } = require("firebase-admin/firestore");
initializeApp();

এইসব লাইন firebase-functions এবং firebase-admin মডিউল লোড করে এবং admin অ্যাপ ইনস্ট্যান্স শুরু করে যেখান থেকে Cloud Firestore পরিবর্তন করা যেতে পারে। যেখানে অ্যাডমিন SDK সাপোর্ট উপলভ্য, যেমন FCM, Authentication এবং Firebase Realtime Database-এর জন্য, এটি Cloud Functions ব্যবহার করে Firebase ইন্টিগ্রেট করার একটি শক্তিশালী উপায় প্রদান করে।

আপনি প্রোজেক্ট শুরু করার সময় Firebase CLI অটোমেটিক Cloud Functions Node মডিউলের জন্য Firebase এবং Firebase SDK ইনস্টল করে। আপনার প্রোজেক্টে থার্ড-পার্টি লাইব্রেরি যোগ করতে, আপনি package.json পরিবর্তন করতে এবং npm install চালাতে পারবেন। আরও তথ্যের জন্য, ডিপেন্ডেন্সি ম্যানেজ করা দেখুন।

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 getFirestore()
    .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-স্টাইল অনুরোধ এবং উত্তর অবজেক্ট 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, একটি অবজেক্ট, অথবা একটি প্রমিস রিটার্ন করবে। আপনি কিছু রিটার্ন না করলে, ফাংশন টাইম-আউট হয়ে যায়, সমস্যার সিগন্যাল দেয় এবং আবার চেষ্টা করা হয়। সিঙ্ক, এসিঙ্ক ও প্রমিস দেখুন।

আপনার ফাংশনের এক্সিকিউশন এমুলেট করুন

Firebase Local Emulator Suite আপনাকে Firebase প্রোজেক্টে ডিপ্লয় করার পরিবর্তে আপনার লোকাল মেশিনে অ্যাপ তৈরি ও পরীক্ষা করার অনুমতি দেয়। ডেভেলপমেন্টের সময় লোকাল টেস্টিং করার জন্য বিশেষভাবে সাজেস্ট করা হয়, কারণ এটি কোডিংয়ের ভুলের কারণে হওয়া ঝুঁকি কমায়, যার ফলে প্রোডাকশন এনভায়রনমেন্টে খরচ হতে পারে (যেমন, ইনফিনিট লুপ)।

আপনার ফাংশন এমুলেট করতে:

  1. firebase emulators:start রান করুন এবং Emulator Suite UI-এর URL-এর জন্য আউটপুট চেক করুন। এটি ডিফল্ট হিসেবে localhost:4000-এ সেট করা থাকে, তবে আপনার মেশিনের অন্য কোনও পোর্টে হোস্ট করা হতে পারে। Emulator Suite UI খুলতে আপনার ব্রাউজারে সেই URL লিখুন।

  2. HTTP ফাংশন addMessage()-এর URL-এর জন্য firebase emulators:start কমান্ডের আউটপুট চেক করুন। এটি দেখতে http://localhost:5001/MY_PROJECT/us-central1/addMessage-এর মতো হবে, তবে:

    1. MY_PROJECT-এর জায়গায় আপনার প্রোজেক্ট আইডি দেখানো হবে।
    2. আপনার লোকাল মেশিনে পোর্ট আলাদা হতে পারে।
  3. ফাংশনের URL-এর শেষে কোয়েরি স্ট্রিং ?text=uppercaseme যোগ করুন। এটি দেখতে অনেকটা এইরকম হবে: http://localhost:5001/MY_PROJECT/us-central1/addMessage?text=uppercaseme। বিকল্প হিসেবে, আপনি "uppercaseme" মেসেজটি পরিবর্তন করে কাস্টম মেসেজ করতে পারেন।

  4. আপনার ব্রাউজারের নতুন ট্যাবে URL খুলে নতুন মেসেজ তৈরি করুন।

  5. Emulator Suite UI-এ ফাংশনের প্রভাব দেখুন:

    1. লগ ট্যাবে, আপনি নতুন লগ দেখতে পাবেন যা থেকে বোঝা যাবে যে addMessage() এবং makeUppercase() ফাংশন রান করেছে:

      i functions: Beginning execution of "addMessage"

      i functions: Beginning execution of "makeUppercase"

    2. Firestore ট্যাবে, আপনি একটি ডকুমেন্ট দেখতে পাবেন যাতে আপনার আসল মেসেজ এবং আপনার মেসেজের আপারকেস ভার্সন (যদি এটি আসল "uppercaseme" হয়, তাহলে আপনি "UPPERCASEME" দেখতে পাবেন) থাকবে।

প্রোডাকশন এনভায়রনমেন্টে ফাংশন ডিপ্লয় করা

এমুলেটরে আপনার ফাংশনগুলি একবার আপনার ইচ্ছা মতো কাজ করলে, আপনি প্রোডাকশন এনভায়রনমেন্টে সেগুলি ডিপ্লয়, পরীক্ষা এবং রান করার জন্য এগিয়ে যেতে পারেন। মনে রাখবেন যে Node.js 14 রানটাইম এনভায়রনমেন্টে ডেপ্লয় করতে, আপনার প্রোজেক্টকে অবশ্যই Blaze প্রাইসিং প্ল্যানে থাকতে হবে। Cloud Functions-এর দাম দেখুন।

টিউটোরিয়াল সম্পূর্ণ করতে, আপনার ফাংশন ডিপ্লয় করুন এবং তারপরে addMessage()-কে ট্রিগার করতে makeUppercase() এক্সিকিউট করুন।

  1. আপনার ফাংশন ডিপ্লয় করতে এই কমান্ড রান করুন:

     firebase deploy --only functions
     

    আপনি এই কমান্ড রান করার পরে, Firebase CLI যেকোনও HTTP ফাংশন এন্ডপয়েন্টের জন্য URL আউটপুট করে। আপনার টার্মিনালে, আপনি নিম্নলিখিত লাইনের মতো একটি লাইন দেখতে পাবেন:

    Function URL (addMessage): https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage
    

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

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

  2. 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 { initializeApp } = require("firebase-admin/app");
const { getFirestore } = require("firebase-admin/firestore");
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 getFirestore()
    .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 সম্পর্কে আরও জানতে, আপনি নিম্নলিখিত কাজগুলিও করতে পারেন: