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

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

  • addMessage() , যা একটি URL রয়েছে যা একটি পাঠ্য মান গ্রহণ করে এবং এটি ক্লাউড Firestore লিখেছেন অনাবৃত।
  • makeUppercase() , যা ক্লাউড Firestore লিখুন এবং রূপান্তর টেক্সট বড় হাতের অক্ষরে উপর ট্রিগার।

আমরা অংশে এই নমুনা জন্য মেঘ Firestore ও HTTP আলোড়ন সৃষ্টি জাভাস্ক্রিপ্ট ফাংশন চয়ন করেছেন, কারণ এই পটভূমি ট্রিগার পুঙ্খানুপুঙ্খভাবে মাধ্যমে পরীক্ষা করা সম্ভব Firebase স্থানীয় এমুলেটর সুইট । এই টুলসেটটি রিয়েলটাইম ডেটাবেস, পাবসাব, অথ এবং এইচটিটিপি কলযোগ্য ট্রিগারগুলিকেও সমর্থন করে। যেমন রিমোট কনফিগ, TestLab যেমন পটভূমি ট্রিগার অন্য ধরনের, এবং অ্যানালিটিক্স ট্রিগার সব করা যাবে ইন্টারেক্টিভ পরীক্ষিত এই পাতায় বর্ণনা করা toolsets ব্যবহার করে।

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

একটি Firebase প্রকল্প তৈরি করুন

  1. ইন Firebase কনসোল , প্রকল্প যোগ করুন ক্লিক করুন, তারপর নির্বাচন করুন অথবা একটি প্রকল্প নাম লিখুন।

    আপনার যদি একটি বিদ্যমান Google ক্লাউড প্রকল্প থাকে, তাহলে আপনি সেই প্রকল্পে Firebase রিসোর্স যোগ করতে ড্রপডাউন মেনু থেকে প্রকল্পটি নির্বাচন করতে পারেন।

  2. (ঐচ্ছিক) আপনি একটি নতুন প্রকল্প তৈরি হয়, আপনি প্রকল্প ID সম্পাদনা করতে পারেন।

    Firebase স্বয়ংক্রিয়ভাবে আপনার Firebase প্রকল্পে একটি অনন্য আইডি বরাদ্দ করে। পরিদর্শন বুঝুন Firebase প্রকল্প কিভাবে Firebase প্রকল্পের আইডি ব্যবহার করে সে সম্পর্কে জানতে।

  3. অবিরত ক্লিক করুন।

  4. (ঐচ্ছিক) আপনার প্রকল্পের, যা আপনি নিম্নলিখিত Firebase পণ্য কোন ব্যবহার করে একটি অনুকূল অভিজ্ঞতা থাকতে সক্ষম সেট Google এনালিটিক্স আপ:

    যখন বলা হবে, একটি বিদ্যমান ব্যবহার করতে নির্বাচন Google Analytics অ্যাকাউন্ট অথবা একটি নতুন অ্যাকাউন্ট তৈরি করুন।
    যদি আপনি একটি নতুন অ্যাকাউন্ট তৈরি করতে পছন্দ করেন, আপনার নির্বাচন অ্যানালিটিক্স অবস্থান প্রতিবেদনের , সেক্ষেত্রে অব্যবহৃত ভাগ করার সেটিংস এবং আপনার প্রকল্পের জন্য Google এনালিটিক্স শর্তাদি স্বীকার।

  5. ক্লিক করুন প্রকল্প তৈরি করুন (অথবা আপনি যদি একটি বিদ্যমান Google মেঘ প্রকল্পের ব্যবহার করছেন, Firebase জুড়ুন)।

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

Node.js এবং Firebase CLI সেট আপ করুন

আপনি একটি প্রয়োজন হবে Node.js লেখার ফাংশন পরিবেশ এবং মেঘ কার্যাবলী রানটাইম আপনি প্রয়োগের ফাংশন Firebase CLI প্রয়োজন হবে। Node.js এবং ইনস্টল করার জন্য npm , নোড সংস্করণ ম্যানেজার বাঞ্ছনীয়।

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

npm install -g firebase-tools

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

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

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

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

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

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

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

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": "10"} । এটি ফাংশন লেখার এবং স্থাপনের জন্য আপনার Node.js সংস্করণ নির্দিষ্ট করে। আপনি করতে পারেন অন্যান্য সমর্থিত সংস্করণ নির্বাচন

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

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

// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');

// The Firebase Admin SDK to access Firestore.
const admin = require('firebase-admin');
admin.initializeApp();

এই লাইন লোড firebase-functions এবং firebase-admin মডিউল, এবং একটি আরম্ভ admin অ্যাপের উদাহরণ যা থেকে মেঘ Firestore পরিবর্তন করা যেতে পারে। যেখানেই এডমিন SDK এর সমর্থন, উপলব্ধ যেমন FCM, প্রমাণীকরণ, এবং Firebase রিয়েলটাইম ডাটাবেস জন্য, এটা ক্লাউড ফাংশন ব্যবহার করে Firebase সংহত করতে একটি শক্তিশালী উপায় প্রদান করে।

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

HTTP- র ফাংশন সমলয় (মতই callable ফাংশন ), তাই আপনি সম্ভব এবং মুলতবি কাজ ক্লাউড 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});
    });

makeUppercase() ফাংশন executes ক্লাউড Firestore লেখা হয় যখন। ref.set ফাংশন দস্তাবেজে শুনতে সংজ্ঞায়িত করে। কর্মক্ষমতার কারণে, আপনার যতটা সম্ভব সুনির্দিষ্ট হওয়া উচিত।

ধনুর্বন্ধনী-উদাহরণস্বরূপ, {documentId} -surround "পরামিতি," ওয়াইল্ডকার্ড যে কলব্যাক তাদের মিলেছে ডেটাকে দেখাবে।

ক্লাউড Firestore আরম্ভ করে onWrite() কলব্যাক যখনই ডাটা লিখিত বা প্রদত্ত দস্তাবেজে আপডেট করা হয়।

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

আপনার ফাংশন এক্সিকিউশন অনুকরণ করুন

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

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

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

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

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

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

  5. এমুলেটর স্যুট UI- এ ফাংশনের প্রভাব দেখুন:

    1. লগ ট্যাবে, আপনি ইঙ্গিত নতুন লগ দেখতে পাবেন যে ফাংশন addMessage() এবং makeUppercase() দৌড়াতে

      আমি ফাংশন: "addMessage" এর বাস্তবায়ন শুরু

      আমি ফাংশন: "makeUppercase" এর বাস্তবায়ন শুরু

    2. Firestore ট্যাব, আপনি একটি ডকুমেন্ট পাশাপাশি আপনার বার্তার uppercased সংস্করণ হিসেবে আপনার মূল বার্তা ধারণকারী (যদি এটি মূলত ছিল "uppercaseme", আপনি "UPPERCASEME" দেখুন করব) দেখতে পাবেন।

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

একবার আপনার ফাংশন এমুলেটরে ইচ্ছামত কাজ করছে, আপনি উৎপাদন পরিবেশে তাদের স্থাপন, পরীক্ষা এবং চালানোর জন্য এগিয়ে যেতে পারেন। মনের মধ্যে যে সুপারিশ Node.js 14 রানটাইম পরিবেশ স্থাপন করতে রাখুন, আপনার প্রকল্পের হওয়া আবশ্যক আলোকচ্ছটা মূল্যের পরিকল্পনা । দেখুন ক্লাউড কার্যাবলী মূল্যের

টিউটোরিয়ালটি সম্পূর্ণ, আপনার ফাংশন স্থাপন এবং তারপর চালানো addMessage() ট্রিগার makeUppercase()

  1. আপনার ফাংশন স্থাপনের জন্য এই কমান্ডটি চালান:

    $ firebase deploy --only functions
    

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

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

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

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

  2. ব্যবহার addMessage() CLI দ্বারা URL টি আউটপুট, একটি টেক্সট ক্যোয়ারী মাপদন্ড যোগ করুন, এবং একটি ব্রাউজারে এটি খোলার:

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

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

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

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

সম্পূর্ণ নমুনা কোড পর্যালোচনা করুন

এখানে সম্পন্ন এর functions/index.js ফাংশন ধারণকারী addMessage() এবং makeUppercase() । এই ফাংশনগুলি আপনাকে একটি HTTP এন্ডপয়েন্টে একটি প্যারামিটার পাস করার অনুমতি দেয় যা ক্লাউড ফায়ারস্টোরে একটি মান লিখবে এবং তারপরে স্ট্রিংয়ের সমস্ত অক্ষরকে বড় করে এটিকে রূপান্তর করবে।

// The Cloud Functions for Firebase SDK to create Cloud Functions and setup triggers.
const functions = require('firebase-functions');

// 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});
    });

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

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

ক্লাউড ফাংশন সম্পর্কে আরও জানতে, আপনি নিম্নলিখিতগুলিও করতে পারেন:

চলচ্চিত্র মাধ্যমে শিক্ষা

আপনি ভিডিও টিউটোরিয়াল দেখে ক্লাউড ফাংশন সম্পর্কে আরো জানতে পারেন। এই ভিডিওতে, আপনি Node.js এবং CLI সেটআপ সহ ক্লাউড ফাংশনগুলির সাথে শুরু করার বিষয়ে বিস্তারিত নির্দেশনা পাবেন।