Catch up on everthing we announced at this year's Firebase Summit. Learn more

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

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

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

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

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

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

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

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

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

  2. पूछे जाने पर वह और उसे स्वीकार Firebase शर्तों

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

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

    या तो मौजूदा चयन Google Analytics खाते या एक नया खाता बनाने के लिए।

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

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

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

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

तुम एक की आवश्यकता होगी Node.js लिखने कार्यों के लिए पर्यावरण, और करने के लिए बादल कार्य क्रम आप तैनाती कार्यों के लिए Firebase CLI की आवश्यकता होगी। Node.js और स्थापित करने के लिए NPM , नोड संस्करण प्रबंधक की सिफारिश की है।

एक बार जब आप Node.js है और स्थापित NPM, Firebase CLI स्थापित अपना पसंदीदा विधि के माध्यम से। एनपीएम के माध्यम से सीएलआई स्थापित करने के लिए, उपयोग करें:

npm install -g firebase-tools

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

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

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

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

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

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

सेटअप कार्यों को पूरा करने के बाद, आप स्रोत निर्देशिका खोल सकते हैं और निम्नलिखित अनुभागों में वर्णित कोड जोड़ना शुरू कर सकते हैं। इस नमूने के लिए, अपनी परियोजना नोड का उपयोग करते हुए बादल कार्य और नियंत्रक SDK मॉड्यूल आयात करना होगा 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 एप्लिकेशन उदाहरण है, जिसमें से बादल Firestore परिवर्तन किए जा सकते हैं। जहाँ भी नियंत्रक SDK समर्थन, उपलब्ध है के रूप में यह FCM, प्रमाणीकरण, और Firebase रीयलटाइम डाटाबेस के लिए है, यह बादल कार्य का उपयोग कर Firebase एकीकृत करने के लिए एक शक्तिशाली तरीका प्रदान करता है।

जब आप अपना प्रोजेक्ट प्रारंभ करते हैं तो Firebase CLI क्लाउड फ़ंक्शंस नोड मॉड्यूल के लिए स्वचालित रूप से Firebase और Firebase SDK इंस्टॉल करता है। अपनी परियोजना के लिए 3 पार्टी पुस्तकालयों को जोड़ने के लिए है, तो आप संशोधित कर सकते हैं 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 कार्यों तुल्यकालिक (के समान हैं प्रतिदेय कार्यों ) है, तो आप संभव और आस्थगित करें काम बादल इस firestore का उपयोग कर के रूप में जल्दी के रूप में एक प्रतिक्रिया भेजना चाहिए। addMessage() HTTP समारोह एक पाठ पथ के अंतर्गत डेटाबेस में HTTP endpoint और यह आवेषण के लिए मान पास /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() फ़ंक्शन निष्पादित बादल firestore करने के लिए लिखा जाता है। ref.set समारोह दस्तावेज़ में पर सुनने परिभाषित करता है। प्रदर्शन कारणों से, आपको यथासंभव विशिष्ट होना चाहिए।

ब्रेसिज़-उदाहरण के लिए, {documentId} -surround "पैरामीटर," वाइल्डकार्ड कि कॉलबैक में उनके मिलान किया डेटा का पर्दाफाश।

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

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

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

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

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

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

  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 । वैकल्पिक रूप से, आप "अपरकेसमी" संदेश को एक कस्टम संदेश में बदल सकते हैं।

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

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

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

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

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

    2. इस firestore टैब में, आप एक दस्तावेज़ में अच्छी तरह से अपने संदेश के uppercased संस्करण के रूप में के रूप में अपने मूल संदेश से युक्त (अगर यह मूल रूप से था "uppercaseme", आप "UPPERCASEME" दिखाई देगा) देखना चाहिए।

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

एक बार जब आपके कार्य एमुलेटर में वांछित काम कर रहे हों, तो आप उत्पादन वातावरण में उन्हें तैनात करने, परीक्षण करने और चलाने के लिए आगे बढ़ सकते हैं। मन में है कि सिफारिश की 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. का उपयोग करते हुए addMessage() CLI द्वारा यूआरएल उत्पादन, एक पाठ क्वेरी पैरामीटर जोड़ने के लिए, और एक ब्राउज़र में खोलने:

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

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

तैनाती और कार्यों को क्रियान्वित करने के बाद, आप कर सकते हैं बादल कार्य के लिए Firebase कंसोल में लॉग देखने । आप की जरूरत है कार्यों को हटाने के विकास या उत्पादन में, Firebase CLI का उपयोग करें।

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

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

यहाँ पूरा है 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 सेटअप सहित क्लाउड फ़ंक्शंस के साथ आरंभ करने के बारे में विस्तृत मार्गदर्शन मिलेगा।