Join us in person and online for Firebase Summit on October 18, 2022. Learn how Firebase can help you accelerate app development, release your app with confidence, and scale with ease. Register now

प्रारंभ करें: अपने पहले कार्यों को लिखें, परीक्षण करें और परिनियोजित करें

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

क्लाउड फ़ंक्शंस के साथ आरंभ करने के लिए, इस ट्यूटोरियल के माध्यम से काम करने का प्रयास करें, जो आवश्यक सेटअप कार्यों से शुरू होता है और दो संबंधित कार्यों को बनाने, परीक्षण करने और तैनात करने के माध्यम से काम करता है:

  • addMessage() , जो एक यूआरएल को उजागर करता है जो एक टेक्स्ट मान स्वीकार करता है और इसे क्लाउड फायरस्टोर को लिखता है।
  • makeUppercase() , जो क्लाउड फायरस्टोर पर ट्रिगर करता है और टेक्स्ट को अपरकेस में बदल देता है।

हमने इस नमूने के लिए क्लाउड फायरस्टोर और एचटीटीपी-ट्रिगर जावास्क्रिप्ट फ़ंक्शन को आंशिक रूप से चुना है क्योंकि इन पृष्ठभूमि ट्रिगर्स का फायरबेस लोकल एमुलेटर सूट के माध्यम से पूरी तरह से परीक्षण किया जा सकता है। यह टूलसेट रीयलटाइम डेटाबेस, PubSub, Auth, और HTTP कॉल करने योग्य ट्रिगर का भी समर्थन करता है। अन्य प्रकार के बैकग्राउंड ट्रिगर जैसे रिमोट कॉन्फिगर, टेस्टलैब और एनालिटिक्स ट्रिगर्स को इस पेज में वर्णित टूलसेट का उपयोग करके अंतःक्रियात्मक रूप से परीक्षण किया जा सकता है।

इस ट्यूटोरियल के निम्नलिखित खंड नमूने के निर्माण, परीक्षण और परिनियोजन के लिए आवश्यक चरणों का विवरण देते हैं। यदि आप केवल कोड चलाना और उसका निरीक्षण करना चाहते हैं, तो संपूर्ण नमूना कोड की समीक्षा करें पर जाएं।

एक फायरबेस प्रोजेक्ट बनाएं

  1. फायरबेस कंसोल में, प्रोजेक्ट जोड़ें पर क्लिक करें।

    • किसी मौजूदा Google क्लाउड प्रोजेक्ट में Firebase संसाधन जोड़ने के लिए, उसका प्रोजेक्ट नाम दर्ज करें या ड्रॉपडाउन मेनू से उसका चयन करें।

    • एक नया प्रोजेक्ट बनाने के लिए, वांछित प्रोजेक्ट नाम दर्ज करें। आप वैकल्पिक रूप से प्रोजेक्ट नाम के नीचे प्रदर्शित प्रोजेक्ट आईडी को संपादित भी कर सकते हैं।

  2. संकेत मिलने पर, Firebase शर्तों की समीक्षा करें और उन्हें स्वीकार करें.

  3. जारी रखें पर क्लिक करें।

  4. (वैकल्पिक) अपने प्रोजेक्ट के लिए Google Analytics सेट करें, जो आपको निम्न में से किसी भी Firebase उत्पादों का उपयोग करके एक इष्टतम अनुभव प्राप्त करने में सक्षम बनाता है:

    या तो कोई मौजूदा Google Analytics खाता चुनें या एक नया खाता बनाएं.

    यदि आप एक नया खाता बनाते हैं, तो अपना Analytics रिपोर्टिंग स्थान चुनें, फिर अपने प्रोजेक्ट के लिए डेटा साझाकरण सेटिंग और Google Analytics शर्तें स्वीकार करें।

  5. प्रोजेक्ट बनाएं पर क्लिक करें (या अगर आप किसी मौजूदा Google क्लाउड प्रोजेक्ट का उपयोग कर रहे हैं तो Firebase जोड़ें )।

Firebase स्वचालित रूप से आपके Firebase प्रोजेक्ट के लिए संसाधनों का प्रावधान करता है। जब प्रक्रिया पूरी हो जाती है, तो आपको Firebase कंसोल में अपने Firebase प्रोजेक्ट के अवलोकन पृष्ठ पर ले जाया जाएगा।

Node.js और Firebase CLI सेट करें

फ़ंक्शन लिखने के लिए आपको एक Node.js परिवेश की आवश्यकता होगी, और Cloud Functions रनटाइम पर फ़ंक्शंस को परिनियोजित करने के लिए आपको Firebase CLI की आवश्यकता होगी। Node.js और npm स्थापित करने के लिए, नोड संस्करण प्रबंधक की सिफारिश की जाती है।

एक बार जब आप Node.js और npm इंस्टॉल कर लें, तो अपने पसंदीदा तरीके से फायरबेस सीएलआई इंस्टॉल करें । एनपीएम के माध्यम से सीएलआई स्थापित करने के लिए, उपयोग करें:

npm install -g firebase-tools

यह विश्व स्तर पर उपलब्ध फायरबेस कमांड को स्थापित करता है। यदि आदेश विफल हो जाता है, तो आपको npm अनुमतियाँ बदलने की आवश्यकता हो सकती है। firebase-tools के नवीनतम संस्करण में अपडेट करने के लिए, उसी कमांड को फिर से चलाएँ।

अपने प्रोजेक्ट को इनिशियलाइज़ करें

जब आप Cloud Functions के लिए Firebase SDK को इनिशियलाइज़ करते हैं, तो आप एक खाली प्रोजेक्ट बनाते हैं जिसमें निर्भरता और कुछ न्यूनतम नमूना कोड होते हैं, और आप फ़ंक्शंस लिखने के लिए टाइपस्क्रिप्ट या जावास्क्रिप्ट में से किसी एक को चुनते हैं। इस ट्यूटोरियल के प्रयोजनों के लिए, आपको Cloud Firestore को इनिशियलाइज़ करना होगा।

अपनी परियोजना शुरू करने के लिए:

  1. ब्राउज़र के माध्यम से लॉग इन करने के लिए firebase login चलाएं और फायरबेस टूल को प्रमाणित करें।
  2. अपने फायरबेस प्रोजेक्ट डायरेक्टरी पर जाएं।
  3. firebase init firestore चलाएं। इस ट्यूटोरियल के लिए, फायरस्टोर नियमों और इंडेक्स फाइलों के लिए संकेत मिलने पर आप डिफ़ॉल्ट मान स्वीकार कर सकते हैं। यदि आपने अभी तक इस प्रोजेक्ट में क्लाउड फायरस्टोर का उपयोग नहीं किया है, तो आपको फायरस्टोर के लिए एक प्रारंभिक मोड और स्थान का चयन करना होगा जैसा कि क्लाउड फायरस्टोर के साथ आरंभ करें में वर्णित है।
  4. firebase init functions चलाएँ। उपकरण आपको npm के साथ निर्भरता स्थापित करने का विकल्प देता है। यदि आप निर्भरता को किसी अन्य तरीके से प्रबंधित करना चाहते हैं तो इसे अस्वीकार करना सुरक्षित है, हालांकि यदि आप गिरावट करते हैं तो आपको अपने कार्यों का अनुकरण या परिनियोजन करने से पहले 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 संस्करण को निर्दिष्ट करता है। आप अन्य समर्थित संस्करणों का चयन कर सकते हैं।

आवश्यक मॉड्यूल आयात करें और एक ऐप प्रारंभ करें

सेटअप कार्यों को पूरा करने के बाद, आप स्रोत निर्देशिका खोल सकते हैं और निम्नलिखित अनुभागों में वर्णित कोड जोड़ना शुरू कर सकते हैं। इस नमूने के लिए, आपके प्रोजेक्ट को नोड require कथनों का उपयोग करके क्लाउड फ़ंक्शंस और एडमिन एसडीके मॉड्यूल आयात करना होगा। अपनी index.js फ़ाइल में निम्न की तरह पंक्तियाँ जोड़ें:

// The Cloud Functions for Firebase SDK to create Cloud Functions and set up 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 ऐप इंस्टेंस को इनिशियलाइज़ करती हैं जिससे क्लाउड फायरस्टोर में बदलाव किए जा सकते हैं। जहां कहीं भी व्यवस्थापक एसडीके समर्थन उपलब्ध है, जैसा कि एफसीएम, प्रमाणीकरण और फायरबेस रीयलटाइम डेटाबेस के लिए है, यह क्लाउड फ़ंक्शंस का उपयोग करके फायरबेस को एकीकृत करने का एक शक्तिशाली तरीका प्रदान करता है।

जब आप अपना प्रोजेक्ट प्रारंभ करते हैं तो Firebase CLI क्लाउड फ़ंक्शंस नोड मॉड्यूल के लिए स्वचालित रूप से 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 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 समापन बिंदु है। एंडपॉइंट के लिए कोई भी अनुरोध एक्सप्रेसजेएस-शैली अनुरोध और प्रतिक्रिया ऑब्जेक्ट में परिणाम onRequest() कॉलबैक को पास किया जाता है।

HTTP फ़ंक्शंस सिंक्रोनस (कॉल करने योग्य फ़ंक्शंस के समान) हैं, इसलिए आपको जल्द से जल्द एक प्रतिक्रिया भेजनी चाहिए और क्लाउड फायरस्टोर का उपयोग करके काम को स्थगित करना चाहिए। 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() फ़ंक्शन निष्पादित होता है। ref.set फ़ंक्शन दस्तावेज़ को सुनने के लिए परिभाषित करता है। प्रदर्शन कारणों से, आपको यथासंभव विशिष्ट होना चाहिए।

ब्रेसिज़—उदाहरण के लिए, {documentId} - "पैरामीटर" के आसपास, वाइल्डकार्ड जो कॉलबैक में उनके मिलान किए गए डेटा को उजागर करते हैं।

जब भी डेटा किसी दिए गए दस्तावेज़ पर लिखा या अपडेट किया जाता है, तो Cloud Firestore onWrite() कॉलबैक को ट्रिगर करता है।

इवेंट-संचालित फ़ंक्शंस जैसे Cloud Firestore ईवेंट एसिंक्रोनस हैं। कॉलबैक फ़ंक्शन को या तो एक null , एक वस्तु , या एक वादा वापस करना चाहिए। यदि आप कुछ भी वापस नहीं करते हैं, तो फ़ंक्शन का समय समाप्त हो जाता है, एक त्रुटि का संकेत देता है, और पुनः प्रयास किया जाता है। सिंक, एसिंक्स और प्रॉमिस देखें।

अपने कार्यों के निष्पादन का अनुकरण करें

फायरबेस लोकल एमुलेटर सूट आपको फायरबेस प्रोजेक्ट पर तैनात करने के बजाय अपनी स्थानीय मशीन पर ऐप बनाने और परीक्षण करने की अनुमति देता है। विकास के दौरान स्थानीय परीक्षण की दृढ़ता से अनुशंसा की जाती है, क्योंकि यह कोडिंग त्रुटियों से जोखिम को कम करता है जो संभावित रूप से उत्पादन वातावरण में लागत उत्पन्न कर सकता है (उदाहरण के लिए, एक अनंत लूप)।

अपने कार्यों का अनुकरण करने के लिए:

  1. firebase emulators:start करें और जांचें। यह लोकलहोस्ट: 4000 पर डिफॉल्ट करता है, लेकिन आपकी मशीन पर एक अलग पोर्ट पर होस्ट किया जा सकता है। एमुलेटर सूट यूआई खोलने के लिए अपने ब्राउज़र में उस यूआरएल को दर्ज करें।

  2. firebase emulators:start HTTP फ़ंक्शन addMessage() के URL के लिए कमांड शुरू करें। यह 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 । वैकल्पिक रूप से, आप "अपरकेसमी" संदेश को एक कस्टम संदेश में बदल सकते हैं।

  4. अपने ब्राउज़र में एक नए टैब में URL खोलकर एक नया संदेश बनाएं।

  5. एम्यूलेटर सूट यूआई में कार्यों के प्रभाव देखें:

    1. लॉग्स टैब में, आपको नए लॉग देखने चाहिए जो इंगित करते हैं कि फ़ंक्शन addMessage() और makeUppercase() चल रहे हैं:

      मैं कार्य करता हूं: "addMessage" का निष्पादन प्रारंभ करना

      मैं कार्य करता हूं: "मेकअपपरकेस" का निष्पादन शुरू करना

    2. फायरस्टोर टैब में, आपको अपने मूल संदेश के साथ-साथ आपके संदेश के अपरकेस संस्करण वाला एक दस्तावेज़ देखना चाहिए (यदि यह मूल रूप से "अपरकेसेम" था, तो आप "अपरकेसेम" देखेंगे)।

उत्पादन वातावरण में कार्यों को तैनात करें

एक बार जब आपके कार्य एमुलेटर में वांछित काम कर रहे हों, तो आप उत्पादन वातावरण में उन्हें तैनात करने, परीक्षण करने और चलाने के लिए आगे बढ़ सकते हैं। ध्यान रखें कि अनुशंसित Node.js 14 रनटाइम परिवेश में परिनियोजित करने के लिए, आपका प्रोजेक्ट ब्लेज़ मूल्य निर्धारण योजना पर होना चाहिए। क्लाउड फ़ंक्शंस मूल्य निर्धारण देखें।

ट्यूटोरियल को पूरा करने के लिए, अपने कार्यों को तैनात करें और फिर addMessage() को ट्रिगर करने के लिए makeUppercase() () निष्पादित करें।

  1. अपने कार्यों को परिनियोजित करने के लिए यह आदेश चलाएँ:

     firebase deploy --only functions
     

    इस आदेश को चलाने के बाद, फायरबेस सीएलआई किसी भी HTTP फ़ंक्शन एंडपॉइंट के लिए यूआरएल आउटपुट करता है। अपने टर्मिनल में, आपको निम्न की तरह एक लाइन देखनी चाहिए:

    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
    

    फ़ंक्शन डेटाबेस स्थान पर फ़ायरबेस कंसोल पर ब्राउज़र को निष्पादित और पुनर्निर्देशित करता है जहां टेक्स्ट स्ट्रिंग संग्रहीत है। यह लेखन घटना makeUppercase() को ट्रिगर करती है, जो स्ट्रिंग का एक अपरकेस संस्करण लिखता है।

कार्यों को परिनियोजित करने और निष्पादित करने के बाद, आप Google क्लाउड कंसोल में लॉग देख सकते हैं। यदि आप विकास या उत्पादन में कार्यों को हटाना चाहते हैं, तो फायरबेस सीएलआई का उपयोग करें।

उत्पादन में, आप चलाने के लिए न्यूनतम और अधिकतम इंस्टेंस सेट करके फ़ंक्शन प्रदर्शन और नियंत्रण लागत को अनुकूलित करना चाह सकते हैं। इन रनटाइम विकल्पों के बारे में अधिक जानकारी के लिए नियंत्रण स्केलिंग व्यवहार देखें।

संपूर्ण नमूना कोड की समीक्षा करें

यहां पूर्ण किए गए functions/index.js हैं जिनमें फ़ंक्शन addMessage() और makeUppercase() शामिल हैं। ये फ़ंक्शन आपको एक HTTP एंडपॉइंट के लिए एक पैरामीटर पास करने की अनुमति देते हैं जो क्लाउड फायरस्टोर को एक मान लिखता है, और फिर स्ट्रिंग में सभी वर्णों को अपरकेस करके इसे बदल देता है।

// The Cloud Functions for Firebase SDK to create Cloud Functions and set up 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 सेटअप सहित क्लाउड फ़ंक्शंस के साथ आरंभ करने के बारे में विस्तृत मार्गदर्शन मिलेगा।