शुरू करें: पहली जनरेशन के अपने पहले फ़ंक्शन लिखें, उनकी जांच करें, और उन्हें डिप्लॉय करें

Cloud Functions का इस्तेमाल शुरू करने के लिए, इस ट्यूटोरियल को आज़माएं. इसमें सेटअप करने के ज़रूरी टास्क से शुरुआत की जाती है. इसके बाद, दो मिलते-जुलते फ़ंक्शन बनाने, उनकी जांच करने, और उन्हें डिप्लॉय करने का तरीका बताया जाता है:

  • "add message" फ़ंक्शन, जो एक यूआरएल दिखाता है. यह यूआरएल, टेक्स्ट वैल्यू को स्वीकार करता है और उसे Cloud Firestore में लिखता है.
  • "make uppercase" फ़ंक्शन, जो Cloud Firestore लिखने पर ट्रिगर होता है और टेक्स्ट को अंग्रेज़ी के बड़े अक्षरों में बदल देता है.

हमने इस सैंपल के लिए, Cloud Firestore और एचटीटीपी से ट्रिगर होने वाले JavaScript फ़ंक्शन चुने हैं. इसकी एक वजह यह है कि बैकग्राउंड में ट्रिगर होने वाले इन फ़ंक्शन को Firebase Local Emulator Suite की मदद से पूरी तरह से टेस्ट किया जा सकता है. यह टूलसेट, Realtime Database, PubSub, Auth, और एचटीटीपी से कॉल किए जा सकने वाले ट्रिगर के साथ भी काम करता है. बैकग्राउंड में ट्रिगर होने वाले अन्य टाइप, जैसे कि Remote Config, TestLab, और Analytics ट्रिगर को इंटरैक्टिव तरीके से टेस्ट किया जा सकता है. इसके लिए, टूलसेट का इस्तेमाल किया जा सकता है. हालांकि, इस पेज पर उनके बारे में नहीं बताया गया है.

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

Firebase प्रोजेक्ट बनाना

Firebase या Cloud का इस्तेमाल पहली बार करना

अगर आपने Firebase या Google Cloud का इस्तेमाल पहले कभी नहीं किया है, तो यह तरीका अपनाएं.
अगर आपको पूरी तरह से नया Firebase प्रोजेक्ट (और उससे जुड़ा Google Cloud प्रोजेक्ट) बनाना है, तो यह तरीका भी अपनाया जा सकता है.

  1. Firebase console में साइन इन करें.
  2. नया Firebase प्रोजेक्ट बनाने के लिए, बटन पर क्लिक करें.
  3. टेक्स्ट फ़ील्ड में, प्रोजेक्ट का नाम डालें.

    अगर आप किसी Google Cloud संगठन का हिस्सा हैं, तो आपके पास यह चुनने का विकल्प होता है कि आपको अपना प्रोजेक्ट किस फ़ोल्डर में बनाना है.

  4. अगर कहा जाए, तो Firebase की शर्तें पढ़ें और उन्हें स्वीकार करें. इसके बाद, जारी रखें पर क्लिक करें.
  5. (ज़रूरी नहीं) Firebase कंसोल में एआई असिस्टेंट की सुविधा चालू करें. इसे "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 आपका प्रोजेक्ट बनाता है, कुछ शुरुआती संसाधन उपलब्ध कराता है, और ज़रूरी एपीआई चालू करता है. प्रोसेस पूरी होने के बाद, आपको Firebase कंसोल में अपने Firebase प्रोजेक्ट की खास जानकारी वाले पेज पर ले जाया जाएगा.

मौजूदा क्लाउड प्रोजेक्ट

अगर आपको किसी मौजूदा Google Cloud प्रोजेक्ट के साथ Firebase का इस्तेमाल करना है, तो यह तरीका अपनाएं. किसी मौजूदा Google Cloud प्रोजेक्ट में"Firebase जोड़ने" के बारे में ज़्यादा जानें और इससे जुड़ी समस्या हल करें.

  1. उस खाते से Firebase कंसोल में साइन इन करें जिससे आपको मौजूदा Google Cloud प्रोजेक्ट का ऐक्सेस मिलता है.
  2. नया Firebase प्रोजेक्ट बनाने के लिए, बटन पर क्लिक करें.
  3. पेज पर सबसे नीचे, Google Cloud प्रोजेक्ट में Firebase जोड़ें पर क्लिक करें.
  4. टेक्स्ट फ़ील्ड में, मौजूदा प्रोजेक्ट का प्रोजेक्ट नाम डालना शुरू करें. इसके बाद, दिखाई गई सूची से प्रोजेक्ट चुनें.
  5. प्रोजेक्ट खोलें पर क्लिक करें.
  6. अगर कहा जाए, तो Firebase की शर्तें पढ़ें और उन्हें स्वीकार करें. इसके बाद, जारी रखें पर क्लिक करें.
  7. (ज़रूरी नहीं) Firebase कंसोल में एआई असिस्टेंट की सुविधा चालू करें. इसे "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 सीएलआई की ज़रूरत होगी. Node.js और npm इंस्टॉल करने के लिए, Node Version Manager का इस्तेमाल करने का सुझाव दिया जाता है.

Node.js और npm इंस्टॉल करने के बाद, अपने पसंदीदा तरीके से Firebase सीएलआई इंस्टॉल करें. npm के ज़रिए सीएलआई इंस्टॉल करने के लिए, इसका इस्तेमाल करें:

npm install -g firebase-tools

इससे दुनिया भर में उपलब्ध firebase कमांड इंस्टॉल हो जाता है. अगर निर्देश काम नहीं करता है, तो आपको npm की अनुमतियां बदलनी पड़ सकती हैं. firebase-tools को नए वर्शन पर अपडेट करने के लिए, वही कमांड फिर से चलाएं.

अपना प्रोजेक्ट शुरू करना

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

अपने प्रोजेक्ट को शुरू करने के लिए:

  1. ब्राउज़र से लॉग इन करने और Firebase सीएलआई की पुष्टि करने के लिए, firebase login चलाएं.

  2. अपने Firebase प्रोजेक्ट की डायरेक्ट्री पर जाएं.

  3. firebase init firestore चलाएं. इस ट्यूटोरियल के लिए, Firestore के नियमों और इंडेक्स फ़ाइलों के बारे में पूछे जाने पर, डिफ़ॉल्ट वैल्यू स्वीकार की जा सकती हैं. अगर आपने इस प्रोजेक्ट में अब तक Cloud Firestore का इस्तेमाल नहीं किया है, तो आपको Firestore के लिए शुरुआती मोड और जगह भी चुननी होगी. इसके बारे में, Cloud Firestore का इस्तेमाल शुरू करें में बताया गया है.

  4. firebase init functions चलाएं. सीएलआई आपको कोई मौजूदा कोड बेस चुनने या नया कोड बेस शुरू करने और उसे नाम देने के लिए कहता है. शुरुआत में, डिफ़ॉल्ट जगह पर मौजूद एक कोड बेस ही काफ़ी होता है. बाद में, जब आपका ऐप्लिकेशन बड़ा हो जाता है, तो आपको कोड बेस में फ़ंक्शन व्यवस्थित करने की ज़रूरत पड़ सकती है.

  5. सीएलआई में, भाषा के लिए ये विकल्प मिलते हैं:

    इस ट्यूटोरियल के लिए, JavaScript चुनें.

  6. सीएलआई आपको 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 में बदलाव किए जा सकते हैं. जहां भी Admin SDK की सुविधा उपलब्ध है, जैसे कि FCM, Authentication, और Firebase Realtime Database के लिए, वहां यह Cloud Functions का इस्तेमाल करके, Firebase को इंटिग्रेट करने का एक बेहतरीन तरीका उपलब्ध कराता है.

Firebase सीएलआई, प्रोजेक्ट शुरू करने पर 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() फ़ंक्शन, एक एचटीटीपी एंडपॉइंट है. एंडपॉइंट को किए गए किसी भी अनुरोध के नतीजे के तौर पर, ExpressJS-स्टाइल के Request और Response ऑब्जेक्ट, onRequest() कॉलबैक को पास किए जाते हैं.

एचटीटीपी फ़ंक्शन, सिंक्रोनस होते हैं. ये कॉल किए जा सकने वाले फ़ंक्शन की तरह होते हैं. इसलिए, आपको जल्द से जल्द जवाब भेजना चाहिए और Cloud Firestore का इस्तेमाल करके काम को टालना चाहिए. addMessage() एचटीटीपी फ़ंक्शन, एचटीटीपी एंडपॉइंट को टेक्स्ट वैल्यू पास करता है और उसे /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() फ़ंक्शन तब काम करता है, जब Cloud Firestore को लिखा जाता है. ref.set फ़ंक्शन, उस दस्तावेज़ को तय करता है जिसे सुनना है. परफ़ॉर्मेंस को बेहतर बनाने के लिए, आपको ज़्यादा से ज़्यादा सटीक जानकारी देनी चाहिए.

ब्रेसेस—उदाहरण के लिए, {documentId}—"पैरामीटर" को घेरते हैं, वाइल्डकार्ड जो कॉलबैक में अपने मैच किए गए डेटा को दिखाते हैं.

नए मैसेज जोड़े जाने पर, Cloud Firestore onCreate() कॉलबैक को ट्रिगर करता है.

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

अपने फ़ंक्शन के एक्ज़ीक्यूशन को एम्युलेट करना

Firebase Local Emulator Suite की मदद से, ऐप्लिकेशन को Firebase प्रोजेक्ट में डिप्लॉय करने के बजाय, अपने लोकल डिवाइस पर बनाया और टेस्ट किया जा सकता है. हमारा सुझाव है कि डेवलपमेंट के दौरान, लोकल टेस्टिंग ज़रूर करें. इससे कोडिंग की गड़बड़ियों का जोखिम कम हो जाता है. इन गड़बड़ियों की वजह से, प्रोडक्शन एनवायरमेंट में लागत बढ़ सकती है. उदाहरण के लिए, इनफ़ाइनाइट लूप.

अपने फ़ंक्शन को एम्युलेट करने के लिए:

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

  2. एचटीटीपी फ़ंक्शन addMessage() के यूआरएल के लिए, firebase emulators:start कमांड का आउटपुट देखें. यह http://localhost:5001/MY_PROJECT/us-central1/addMessage जैसा ही दिखेगा. हालांकि, इसमें ये अंतर होंगे:

    1. MY_PROJECT की जगह आपका प्रोजेक्ट आईडी दिखेगा.
    2. आपकी लोकल मशीन पर पोर्ट अलग हो सकता है.
  3. फ़ंक्शन के यूआरएल के आखिर में, क्वेरी स्ट्रिंग ?text=uppercaseme जोड़ें. यह कुछ ऐसा दिखना चाहिए: http://localhost:5001/MY_PROJECT/us-central1/addMessage?text=uppercaseme. इसके अलावा, "uppercaseme" मैसेज को अपनी पसंद के मुताबिक बदला जा सकता है.

  4. अपने ब्राउज़र में यूआरएल को नए टैब में खोलकर, नया मैसेज बनाएं.

  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 रनटाइम एनवायरमेंट में डिप्लॉय करने के लिए, आपका प्रोजेक्ट ब्लेज़ प्लान पर होना चाहिए. Cloud Functions की कीमत देखें.

ट्यूटोरियल पूरा करने के लिए, अपने फ़ंक्शन डिप्लॉय करें. इसके बाद, makeUppercase() को ट्रिगर करने के लिए addMessage() को एक्ज़ीक्यूट करें.

  1. अपने फ़ंक्शन डिप्लॉय करने के लिए, यह कमांड चलाएं:

     firebase deploy --only functions
     

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

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

    यूआरएल में आपका प्रोजेक्ट आईडी और एचटीटीपी फ़ंक्शन के लिए क्षेत्र की जानकारी शामिल होती है. हालांकि, आपको अभी इस बारे में चिंता करने की ज़रूरत नहीं है, लेकिन प्रोडक्शन एचटीटीपी फ़ंक्शन के लिए जगह की जानकारी देना ज़रूरी है, ताकि नेटवर्क लेटेंसी को कम किया जा सके.

    अगर आपको ऐक्सेस से जुड़ी गड़बड़ियां मिलती हैं, जैसे कि "प्रोजेक्ट को ऐक्सेस करने की अनुमति नहीं दी जा सकी," तो अपने प्रोजेक्ट के लिए उपनाम की जांच करें.

  2. सीएलआई से मिले addMessage() यूआरएल का इस्तेमाल करके, टेक्स्ट क्वेरी पैरामीटर जोड़ें. इसके बाद, इसे किसी ब्राउज़र में खोलें:

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

    फ़ंक्शन, ब्राउज़र को डेटाबेस की जगह पर मौजूद Firebase कंसोल पर रीडायरेक्ट करता है. इस जगह पर टेक्स्ट स्ट्रिंग सेव होती है. यह राइट इवेंट, makeUppercase() को ट्रिगर करता है. इससे स्ट्रिंग का अपरकेस वर्शन लिखा जाता है.

फ़ंक्शन को डिप्लॉय और लागू करने के बाद, Google Cloud कंसोल में लॉग देखे जा सकते हैं. अगर आपको डेवलपमेंट या प्रोडक्शन में फ़ंक्शन मिटाने हैं, तो Firebase सीएलआई का इस्तेमाल करें.

प्रोडक्शन में, फ़ंक्शन की परफ़ॉर्मेंस को ऑप्टिमाइज़ किया जा सकता है. साथ ही, इंस्टेंस की कम से कम और ज़्यादा से ज़्यादा संख्या सेट करके, लागत को कंट्रोल किया जा सकता है. रनटाइम के इन विकल्पों के बारे में ज़्यादा जानने के लिए, स्केलिंग के व्यवहार को कंट्रोल करना देखें.

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

यहां पूरा किया गया functions/index.js दिया गया है, जिसमें addMessage() और makeUppercase() फ़ंक्शन शामिल हैं. इन फ़ंक्शन की मदद से, किसी एचटीटीपी एंडपॉइंट पर पैरामीटर पास किया जा सकता है. यह एंडपॉइंट, 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 के बारे में ज़्यादा जानने के लिए, ये काम भी किए जा सकते हैं: