শুরু করুন: লিখুন, পরীক্ষা করুন এবং আপনার প্রথম ফাংশন স্থাপন করুন

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

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

ফাংশনগুলি সম্বলিত সম্পূর্ণ নমুনা কোডটি এখানে দেওয়া হল:

নোড.জেএস

// The Cloud Functions for Firebase SDK to create Cloud Functions and triggers.
const {logger} = require("firebase-functions");
const {onRequest} = require("firebase-functions/https");
const {onDocumentCreated} = require("firebase-functions/firestore");

// 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 = 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 saves an uppercased version of the message
// to /messages/:documentId/uppercase
exports.makeuppercase = onDocumentCreated("/messages/{documentId}", (event) => {
  // Grab the current value of what was written to Firestore.
  const original = event.data.data().original;

  // Access the parameter `{documentId}` with `event.params`
  logger.log("Uppercasing", event.params.documentId, original);

  const uppercase = original.toUpperCase();

  // You must return a Promise when performing
  // asynchronous tasks inside a function
  // such as writing to Firestore.
  // Setting an 'uppercase' field in Firestore document returns a Promise.
  return event.data.ref.set({uppercase}, {merge: true});
});

পাইথন

# The Cloud Functions for Firebase SDK to create Cloud Functions and set up triggers.
from firebase_functions import firestore_fn, https_fn

# The Firebase Admin SDK to access Cloud Firestore.
from firebase_admin import initialize_app, firestore
import google.cloud.firestore

app = initialize_app()


@https_fn.on_request()
def addmessage(req: https_fn.Request) -> https_fn.Response:
    """Take the text parameter passed to this HTTP endpoint and insert it into
    a new document in the messages collection."""
    # Grab the text parameter.
    original = req.args.get("text")
    if original is None:
        return https_fn.Response("No text parameter provided", status=400)

    firestore_client: google.cloud.firestore.Client = firestore.client()

    # Push the new message into Cloud Firestore using the Firebase Admin SDK.
    _, doc_ref = firestore_client.collection("messages").add({"original": original})

    # Send back a message that we've successfully written the message
    return https_fn.Response(f"Message with ID {doc_ref.id} added.")


@firestore_fn.on_document_created(document="messages/{pushId}")
def makeuppercase(event: firestore_fn.Event[firestore_fn.DocumentSnapshot | None]) -> None:
    """Listens for new documents to be added to /messages. If the document has
    an "original" field, creates an "uppercase" field containg the contents of
    "original" in upper case."""

    # Get the value of "original" if it exists.
    if event.data is None:
        return
    try:
        original = event.data.get("original")
    except KeyError:
        # No "original" field, so do nothing.
        return

    # Set the "uppercase" field.
    print(f"Uppercasing {event.params['pushId']}: {original}")
    upper = original.upper()
    event.data.reference.update({"uppercase": upper})

এই টিউটোরিয়াল সম্পর্কে

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

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

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

ফায়ারবেস বা ক্লাউডে নতুন

আপনি যদি Firebase বা Google Cloud এ নতুন হন তাহলে এই ধাপগুলি অনুসরণ করুন।
আপনি যদি সম্পূর্ণ নতুন একটি Firebase প্রকল্প (এবং এর অন্তর্নিহিত Google Cloud প্রকল্প) তৈরি করতে চান তবে আপনি এই পদক্ষেপগুলি অনুসরণ করতে পারেন।

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

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

  4. যদি অনুরোধ করা হয়, তাহলে Firebase শর্তাবলী পর্যালোচনা করুন এবং গ্রহণ করুন, তারপর Continue এ ক্লিক করুন।
  5. (ঐচ্ছিক) Firebase কনসোলে (যাকে "Firebase-এ Gemini" বলা হয়) AI সহায়তা সক্ষম করুন, যা আপনাকে শুরু করতে এবং আপনার উন্নয়ন প্রক্রিয়াকে সুগম করতে সাহায্য করতে পারে।
  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 project-এ Firebase যোগ করুন- এ ক্লিক করুন।
  4. টেক্সট ফিল্ডে, বিদ্যমান প্রকল্পের প্রকল্পের নাম লিখতে শুরু করুন, এবং তারপর প্রদর্শিত তালিকা থেকে প্রকল্পটি নির্বাচন করুন।
  5. প্রজেক্ট খুলুন ক্লিক করুন।
  6. যদি অনুরোধ করা হয়, তাহলে Firebase শর্তাবলী পর্যালোচনা করুন এবং গ্রহণ করুন, তারপর Continue এ ক্লিক করুন।
  7. (ঐচ্ছিক) Firebase কনসোলে (যাকে "Firebase-এ Gemini" বলা হয়) AI সহায়তা সক্ষম করুন, যা আপনাকে শুরু করতে এবং আপনার উন্নয়ন প্রক্রিয়াকে সুগম করতে সাহায্য করতে পারে।
  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 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 permissions পরিবর্তন করতে হতে পারে। firebase-tools এর সর্বশেষ সংস্করণে আপডেট করতে, একই কমান্ডটি পুনরায় চালান।

পাইথন

ফাংশন লেখার জন্য আপনার একটি পাইথন পরিবেশের প্রয়োজন হবে এবং Cloud Functions রানটাইমে ফাংশন স্থাপনের জন্য আপনার Firebase CLI এর প্রয়োজন হবে। নির্ভরতা বিচ্ছিন্ন করার জন্য আমরা venv ব্যবহার করার পরামর্শ দিই। পাইথন সংস্করণ 3.10 থেকে 3.13 সমর্থিত, 3.13 হল ডিফল্ট রানটাইম।

পাইথন ইনস্টল হয়ে গেলে, আপনার পছন্দের পদ্ধতি ব্যবহার করে Firebase CLI ইনস্টল করুন

আপনার প্রকল্পটি শুরু করুন

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

আপনার প্রকল্পটি শুরু করতে:

  1. ব্রাউজারের মাধ্যমে লগ ইন করতে এবং Firebase CLI প্রমাণীকরণ করতে firebase login চালান।
  2. আপনার Firebase প্রকল্প ডিরেক্টরিতে যান।
  3. firebase init firestore চালান। এই টিউটোরিয়ালের জন্য, Firestore নিয়ম এবং সূচী ফাইলের জন্য অনুরোধ করা হলে আপনি ডিফল্ট মানগুলি গ্রহণ করতে পারেন। যদি আপনি এখনও এই প্রকল্পে Cloud Firestore ব্যবহার না করে থাকেন, তাহলে আপনাকে Get started with Cloud Firestore এ বর্ণিত Firestore এর জন্য একটি শুরুর মোড এবং অবস্থান নির্বাচন করতে হবে।
  4. firebase init functions চালান। CLI আপনাকে একটি বিদ্যমান কোডবেস বেছে নিতে অথবা একটি নতুন কোডবেস চালু করতে এবং নাম দিতে অনুরোধ করবে। যখন আপনি সবেমাত্র শুরু করছেন, তখন ডিফল্ট অবস্থানে একটি কোডবেস যথেষ্ট; পরে, আপনার বাস্তবায়ন প্রসারিত হওয়ার সাথে সাথে, আপনি কোডবেসে ফাংশনগুলি সংগঠিত করতে চাইতে পারেন।
  5. CLI আপনাকে ভাষা সহায়তার জন্য এই বিকল্পগুলি দেয়:

    • জাভাস্ক্রিপ্ট
    • টাইপস্ক্রিপ্ট
    • পাইথন

    এই টিউটোরিয়ালের জন্য, জাভাস্ক্রিপ্ট অথবা পাইথন নির্বাচন করুন। টাইপস্ক্রিপ্টে লেখার জন্য, টাইপস্ক্রিপ্ট দিয়ে ফাংশন লিখুন দেখুন।

  6. CLI আপনাকে নির্ভরতা ইনস্টল করার একটি বিকল্প দেয়। আপনি যদি অন্য কোনও উপায়ে নির্ভরতা পরিচালনা করতে চান তবে এটি প্রত্যাখ্যান করা নিরাপদ।

এই কমান্ডগুলি সফলভাবে সম্পন্ন হওয়ার পরে, আপনার প্রকল্পের কাঠামোটি এইরকম দেখাবে:

নোড.জেএস

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

Node.js-এর জন্য, আরম্ভের সময় তৈরি করা package.json ফাইলটিতে একটি গুরুত্বপূর্ণ কী থাকে: "engines": {"node": "18"} । এটি আপনার Node.js সংস্করণ লেখা এবং স্থাপনের ফাংশনগুলির জন্য নির্দিষ্ট করে। আপনি অন্যান্য সমর্থিত সংস্করণ নির্বাচন করতে পারেন।

পাইথন

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
      |
      +- main.py      # Main source file for your Cloud Functions code
      |
      +- requirements.txt  #  List of the project's modules and packages 
      |
      +- venv/ # Directory where your dependencies are installed

প্রয়োজনীয় মডিউলগুলি আমদানি করুন এবং একটি অ্যাপ শুরু করুন

সেটআপের কাজগুলি সম্পন্ন করার পরে, আপনি সোর্স ডিরেক্টরিটি খুলতে পারেন এবং নিম্নলিখিত বিভাগগুলিতে বর্ণিত কোড যোগ করা শুরু করতে পারেন। এই নমুনার জন্য, আপনার প্রকল্পকে Cloud Functions এবং অ্যাডমিন SDK মডিউলগুলি আমদানি করতে হবে। আপনার সোর্স ফাইলে নিম্নলিখিত লাইনগুলি যোগ করুন:

নোড.জেএস

// The Cloud Functions for Firebase SDK to create Cloud Functions and triggers.
const {logger} = require("firebase-functions");
const {onRequest} = require("firebase-functions/https");
const {onDocumentCreated} = require("firebase-functions/firestore");

// The Firebase Admin SDK to access Firestore.
const {initializeApp} = require("firebase-admin/app");
const {getFirestore} = require("firebase-admin/firestore");

initializeApp();

পাইথন

# The Cloud Functions for Firebase SDK to create Cloud Functions and set up triggers.
from firebase_functions import firestore_fn, https_fn

# The Firebase Admin SDK to access Cloud Firestore.
from firebase_admin import initialize_app, firestore
import google.cloud.firestore

app = initialize_app()

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

আপনার প্রকল্পটি শুরু করার সময় Firebase CLI স্বয়ংক্রিয়ভাবে Firebase Admin SDK এবং Firebase SDK for Cloud Functions মডিউলগুলি ইনস্টল করে। আপনার প্রকল্পে তৃতীয় পক্ষের লাইব্রেরি যোগ করার বিষয়ে আরও তথ্যের জন্য, Handle Dependencies দেখুন।

"বার্তা যোগ করুন" ফাংশনটি যোগ করুন

"যোগ বার্তা" ফাংশনের জন্য, আপনার উৎস ফাইলে এই লাইনগুলি যোগ করুন:

নোড.জেএস

// Take the text parameter passed to this HTTP endpoint and insert it into
// Firestore under the path /messages/:documentId/original
exports.addmessage = 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.`});
});

পাইথন

@https_fn.on_request()
def addmessage(req: https_fn.Request) -> https_fn.Response:
    """Take the text parameter passed to this HTTP endpoint and insert it into
    a new document in the messages collection."""
    # Grab the text parameter.
    original = req.args.get("text")
    if original is None:
        return https_fn.Response("No text parameter provided", status=400)

    firestore_client: google.cloud.firestore.Client = firestore.client()

    # Push the new message into Cloud Firestore using the Firebase Admin SDK.
    _, doc_ref = firestore_client.collection("messages").add({"original": original})

    # Send back a message that we've successfully written the message
    return https_fn.Response(f"Message with ID {doc_ref.id} added.")

"অ্যাড মেসেজ" ফাংশনটি একটি HTTP এন্ডপয়েন্ট। এন্ডপয়েন্টে যেকোনো অনুরোধের ফলে অনুরোধ এবং প্রতিক্রিয়া অবজেক্টগুলি আপনার প্ল্যাটফর্মের জন্য অনুরোধ হ্যান্ডলারের কাছে ( onRequest() অথবা on_request ) প্রেরণ করা হয়।

HTTP ফাংশনগুলি সিঙ্ক্রোনাস ( ক্যালেবল ফাংশনের মতো), তাই আপনার যত তাড়াতাড়ি সম্ভব একটি প্রতিক্রিয়া পাঠানো উচিত এবং Cloud Firestore ব্যবহার করে কাজ স্থগিত করা উচিত। "অ্যাড মেসেজ" HTTP ফাংশন HTTP এন্ডপয়েন্টে একটি টেক্সট মান প্রেরণ করে এবং এটি /messages/:documentId/original পাথের অধীনে ডাটাবেসে সন্নিবেশ করায়।

"বড় হাতের অক্ষর তৈরি করুন" ফাংশন যোগ করুন।

"বড় হাতের অক্ষর তৈরি করুন" ফাংশনের জন্য, আপনার সোর্স ফাইলে এই লাইনগুলি যোগ করুন:

নোড.জেএস

// Listens for new messages added to /messages/:documentId/original
// and saves an uppercased version of the message
// to /messages/:documentId/uppercase
exports.makeuppercase = onDocumentCreated("/messages/{documentId}", (event) => {
  // Grab the current value of what was written to Firestore.
  const original = event.data.data().original;

  // Access the parameter `{documentId}` with `event.params`
  logger.log("Uppercasing", event.params.documentId, original);

  const uppercase = original.toUpperCase();

  // You must return a Promise when performing
  // asynchronous tasks inside a function
  // such as writing to Firestore.
  // Setting an 'uppercase' field in Firestore document returns a Promise.
  return event.data.ref.set({uppercase}, {merge: true});
});

পাইথন

@firestore_fn.on_document_created(document="messages/{pushId}")
def makeuppercase(event: firestore_fn.Event[firestore_fn.DocumentSnapshot | None]) -> None:
    """Listens for new documents to be added to /messages. If the document has
    an "original" field, creates an "uppercase" field containg the contents of
    "original" in upper case."""

    # Get the value of "original" if it exists.
    if event.data is None:
        return
    try:
        original = event.data.get("original")
    except KeyError:
        # No "original" field, so do nothing.
        return

    # Set the "uppercase" field.
    print(f"Uppercasing {event.params['pushId']}: {original}")
    upper = original.upper()
    event.data.reference.update({"uppercase": upper})

"বড় হাতের অক্ষরে তৈরি করুন" ফাংশনটি তখন কার্যকর হয় যখন Cloud Firestore লেখা হয়, যা কোন ডকুমেন্টটি শোনার জন্য তা নির্ধারণ করে। কর্মক্ষমতার কারণে, আপনার যতটা সম্ভব সুনির্দিষ্ট হওয়া উচিত।

ব্রেস—উদাহরণস্বরূপ, {documentId} —"প্যারামিটার", ওয়াইল্ডকার্ডগুলিকে ঘিরে থাকে যা কলব্যাকে তাদের মিলিত ডেটা প্রকাশ করে। যখনই নতুন বার্তা যোগ করা হয় তখন Cloud Firestore কলব্যাক ট্রিগার করে।

Node.js-এ, ইভেন্ট-চালিত ফাংশন যেমন Cloud Firestore ইভেন্টগুলি অ্যাসিঙ্ক্রোনাস। কলব্যাক ফাংশনটি হয় একটি null , একটি Object, অথবা একটি Promise ফেরত পাঠাবে। যদি আপনি কিছু ফেরত না দেন, তাহলে ফাংশনটি টাইম আউট হয়ে যায়, একটি ত্রুটির সংকেত দেয় এবং পুনরায় চেষ্টা করা হয়। Sync, Async, এবং Promise দেখুন।

আপনার ফাংশনের সম্পাদন অনুকরণ করুন

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

আপনার ফাংশন অনুকরণ করতে:

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

  2. HTTP ফাংশনের 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. লগস ট্যাবে, আপনার HTTP ফাংশনগুলি সফলভাবে সম্পন্ন হয়েছে তা নির্দেশ করে নতুন লগগুলি দেখতে পাবেন:

      i functions: Beginning execution of "addMessage"

      i functions: Beginning execution of "makeUppercase"

    2. ফায়ারস্টোর ট্যাবে, আপনার মূল বার্তার পাশাপাশি আপনার বার্তার বড় হাতের সংস্করণ সম্বলিত একটি নথি দেখতে পাবেন (যদি এটি মূলত "বড় হাতের অক্ষর" হয়, তাহলে আপনি "বড় হাতের অক্ষর" দেখতে পাবেন)।

একটি উৎপাদন পরিবেশে ফাংশন স্থাপন করুন

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

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

  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 এর URL আউটপুট ব্যবহার করে, একটি টেক্সট কোয়েরি প্যারামিটার যোগ করুন এবং এটি একটি ব্রাউজারে খুলুন:

    https://us-central1-MY_PROJECT.cloudfunctions.net/addMessage?text=uppercasemetoo
    

    এই ফাংশনটি ব্রাউজারটিকে Firebase কনসোলে ডাটাবেস লোকেশনে এক্সিকিউট করে এবং রিডাইরেক্ট করে যেখানে টেক্সট স্ট্রিংটি সংরক্ষণ করা হয়। এই লেখার ইভেন্টটি "make uppercase" ফাংশনটি ট্রিগার করে, যা স্ট্রিংয়ের একটি uppercase সংস্করণ লেখে।

ফাংশন স্থাপন এবং কার্যকর করার পরে, আপনি Google Cloud কনসোলে লগ দেখতে পারেন। যদি আপনার ডেভেলপমেন্ট বা প্রোডাকশনে ফাংশন মুছে ফেলার প্রয়োজন হয়, তাহলে Firebase CLI ব্যবহার করুন।

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

পরবর্তী পদক্ষেপ

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

Cloud Functions সম্পর্কে আরও জানতে, আপনি নিম্নলিখিতগুলিও করতে পারেন: