अपना ऐप्लिकेशन कनेक्ट करें और प्रोटोटाइप बनाना शुरू करें


Firebase Local Emulator Suite का इस्तेमाल शुरू करने से पहले, पक्का करें कि आपने Firebase प्रोजेक्ट बना लिया हो, डेवलपमेंट एनवायरमेंट सेट अप कर लिया हो, और अपने प्लैटफ़ॉर्म के लिए Firebase SDK टूल चुनकर इंस्टॉल कर लिए हों. इसके लिए, अपने प्लैटफ़ॉर्म के हिसाब से Firebase का इस्तेमाल शुरू करना लेख पढ़ें. ये लेख Apple, Android या वेब के लिए उपलब्ध हैं.

प्रोटोटाइप बनाना और परफ़ॉर्मेंस की जांच करना

Local Emulator Suite में, प्रॉडक्ट के कई एम्युलेटर शामिल हैं. इनके बारे में, Introduction to Firebase Local Emulator Suite लेख में बताया गया है. प्रोटोटाइप बनाने और परफ़ॉर्मेंस की जांच करने के लिए, अलग-अलग एम्युलेटर के साथ-साथ, एम्युलेटर के कॉम्बिनेशन का इस्तेमाल किया जा सकता है. यह इस बात पर निर्भर करता है कि प्रोडक्शन में Firebase के किन प्रॉडक्ट का इस्तेमाल किया जा रहा है.

Firebase डेटाबेस और फ़ंक्शन एम्युलेटर के बीच इंटरैक्शन
डेटाबेस और Cloud Functions एम्युलेटर, पूरे Local Emulator Suite का हिस्सा हैं.

इस विषय के लिए, Local Emulator Suite वर्कफ़्लो के बारे में बताने के लिए, मान लें कि आप किसी ऐसे ऐप्लिकेशन पर काम कर रहे हैं जो प्रॉडक्ट के सामान्य कॉम्बिनेशन का इस्तेमाल करता है. जैसे, Firebase डेटाबेस और उस डेटाबेस पर होने वाली कार्रवाइयों से ट्रिगर होने वाले क्लाउड फ़ंक्शन.

अपने Firebase प्रोजेक्ट को स्थानीय तौर पर शुरू करने के बाद, Local Emulator Suite का इस्तेमाल करके डेवलपमेंट साइकल में आम तौर पर तीन चरण होते हैं:

  1. एम्युलेटर और Emulator Suite UI की मदद से, इंटरैक्टिव तरीके से प्रोटोटाइप बनाना.

  2. अगर डेटाबेस एम्युलेटर या Cloud Functions एम्युलेटर का इस्तेमाल किया जा रहा है, तो अपने ऐप्लिकेशन को एम्युलेटर से कनेक्ट करने के लिए, एक बार का चरण पूरा करना.

  3. एम्युलेटर और कस्टम स्क्रिप्ट की मदद से, टेस्ट को ऑटोमेट करना.

Firebase प्रोजेक्ट को स्थानीय तौर पर शुरू करना

पक्का करें कि आपने सीएलआई इंस्टॉल कर लिया हो या उसे नए वर्शन में अपडेट कर लिया हो.

curl -sL firebase.tools | bash

अगर आपने ऐसा नहीं किया है, तो मौजूदा वर्किंग डायरेक्ट्री को Firebase प्रोजेक्ट के तौर पर शुरू करें. इसके लिए, स्क्रीन पर दिखने वाले निर्देशों का पालन करें. साथ ही, यह भी बताएं कि Cloud Functions और Cloud Firestore या Realtime Database में से किसका इस्तेमाल किया जा रहा है:

firebase init

अब आपकी प्रोजेक्ट डायरेक्ट्री में, Firebase कॉन्फ़िगरेशन फ़ाइलें, डेटाबेस के लिए a Firebase Security Rules परिभाषा वाली फ़ाइल, क्लाउड फ़ंक्शन कोड वाली a functions डायरेक्ट्री , और अन्य ज़रूरी फ़ाइलें शामिल होंगी.

इंटरैक्टिव तरीके से प्रोटोटाइप बनाना

Local Emulator Suite को इस तरह डिज़ाइन किया गया है कि इसकी मदद से, नई सुविधाओं के प्रोटोटाइप तुरंत बनाए जा सकें, साथ ही, Suite का बिल्ट-इन यूज़र इंटरफ़ेस (यूआई), प्रोटोटाइप बनाने के सबसे काम के टूल में से एक है. यह कुछ-कुछ, Firebase कंसोल को स्थानीय तौर पर चलाने जैसा है.

Emulator Suite UI का इस्तेमाल करके, डेटाबेस के डिज़ाइन को बेहतर बनाया जा सकता है. साथ ही, क्लाउड फ़ंक्शन वाले अलग-अलग डेटाफ़्लो आज़माए जा सकते हैं, Security Rules में किए गए बदलावों का आकलन किया जा सकता है, लॉग की जांच करके यह पुष्टि की जा सकती है कि आपके बैक-एंड की सेवाएं कैसा परफ़ॉर्म कर रही हैं वगैरह. इसके बाद, अगर आपको फिर से शुरू करना है, तो बस अपना डेटाबेस साफ़ करें और नए डिज़ाइन के साथ शुरुआत करें.

जब आप Local Emulator Suite शुरू करते हैं, तो यह सब उपलब्ध होता है:

firebase emulators:start

अपने काल्पनिक ऐप्लिकेशन का प्रोटोटाइप बनाने के लिए, डेटाबेस में टेक्स्ट एंट्री में बदलाव करने के लिए, एक बुनियादी क्लाउड फ़ंक्शन सेट अप और टेस्ट करें. साथ ही, इसे ट्रिगर करने के लिए, उस डेटाबेस को Emulator Suite UI में बनाएं और उसमें डेटा भरें.

  1. अपनी प्रोजेक्ट डायरेक्ट्री में मौजूद functions/index.js फ़ाइल में बदलाव करके, डेटाबेस में लिखने की कार्रवाई से ट्रिगर होने वाला क्लाउड फ़ंक्शन बनाएं. मौजूदा फ़ाइल के कॉन्टेंट को, यहां दिए गए स्निपेट से बदलें. यह फ़ंक्शन, messages के क्रम में मौजूद नोड में होने वाले बदलावों को सुनता है. साथ ही, नोड की original प्रॉपर्टी के कॉन्टेंट को अपरकेस में बदलता है और नतीजे को उस नोड की uppercase प्रॉपर्टी में सेव करता है.
  2.   const functions = require('firebase-functions/v1');
    
      exports.makeUppercase = functions.database.ref('/messages/{pushId}/original')
          .onCreate((snapshot, context) => {
            const original = snapshot.val();
            console.log('Uppercasing', context.params.pushId, original);
            const uppercase = original.toUpperCase();
            return snapshot.ref.parent.child('uppercase').set(uppercase);
          });
      
  3. Local Emulator Suite को firebase emulators:start की मदद से लॉन्च करें. Cloud Functions और डेटाबेस एम्युलेटर शुरू होते हैं. इन्हें आपस में काम करने के लिए, अपने-आप कॉन्फ़िगर किया जाता है.
  4. अपने ब्राउज़र में http://localhost:4000 पर जाकर, यूज़र इंटरफ़ेस (यूआई) देखें. पोर्ट 4000, यूज़र इंटरफ़ेस (यूआई) के लिए डिफ़ॉल्ट पोर्ट है. हालांकि, Firebase सीएलआई से मिलने वाले टर्मिनल मैसेज की आउटपुट की जांच करें. उपलब्ध एम्युलेटर की स्थिति देखें. हमारे मामले में, Cloud Functions और Realtime Database एम्युलेटर चालू होंगे.
    मेरी इमेज
  5. यूज़र इंटरफ़ेस (यूआई) में, Realtime Database टैब पर, डेटाबेस कॉन्टेंट एडिटर के कंट्रोल का इस्तेमाल करके, नोड का एक सेट बनाएं. इसमें messages नोड हो. इसमें message1 नोड हो. इसमें एक ऐसा नोड हो जिसकी कुंजी original पर सेट हो और वैल्यू test पर सेट हो. इससे हमारा क्लाउड फ़ंक्शन ट्रिगर होता है. ध्यान दें कि कुछ ही समय में, एक नई uppercase प्रॉपर्टी दिखती है. इसकी वैल्यू TEST होती है.
    मेरी इमेज मेरी इमेज
  6. डेटाबेस को अपडेट करते समय, आपके फ़ंक्शन में कोई गड़बड़ी नहीं हुई, इसकी पुष्टि करने के लिए लॉग टैब की जांच करें.

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

अपने ऐप्लिकेशन को एम्युलेटर से कनेक्ट करना

इंटरैक्टिव तरीके से प्रोटोटाइप बनाने में अच्छी प्रोग्रेस करने और डिज़ाइन तय कर लेने के बाद, अपने ऐप्लिकेशन में डेटाबेस ऐक्सेस करने वाला कोड जोड़ा जा सकता है. इसके लिए, सही एसडीके का इस्तेमाल करें. अपने ऐप्लिकेशन के सही तरीके से काम करने की पुष्टि करने के लिए, Emulator Suite UI में, डेटाबेस टैब और फ़ंक्शन के लिए, लॉग टैब का इस्तेमाल किया जाता रहेगा.

ध्यान रखें कि Local Emulator Suite स्थानीय डेवलपमेंट टूल है. प्रोडक्शन डेटाबेस में लिखने की कार्रवाइयों से, स्थानीय तौर पर प्रोटोटाइप किए जा रहे फ़ंक्शन ट्रिगर नहीं होंगे.

अपने ऐप्लिकेशन को डेटाबेस में लिखने की कार्रवाइयां करने के लिए, आपको अपने टेस्ट क्लास या ऐप्लिकेशन में मौजूद कॉन्फ़िगरेशन को Realtime Database एम्युलेटर पर पॉइंट करना होगा.

Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val database = Firebase.database
database.useEmulator("10.0.2.2", 9000)
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseDatabase database = FirebaseDatabase.getInstance();
database.useEmulator("10.0.2.2", 9000);
Swift
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://127.0.0.1:9000?ns=YOUR_DATABASE_NAMESPACE")

Web

import { getDatabase, connectDatabaseEmulator } from "firebase/database";

const db = getDatabase();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  connectDatabaseEmulator(db, "127.0.0.1", 9000);
} 

Web

var db = firebase.database();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  db.useEmulator("127.0.0.1", 9000);
} 

कस्टम स्क्रिप्ट की मदद से, टेस्ट को ऑटोमेट करना

अब वर्कफ़्लो का आखिरी चरण. ऐप्लिकेशन में अपनी सुविधा का प्रोटोटाइप बनाने और सभी प्लैटफ़ॉर्म पर इसके अच्छे नतीजे दिखने के बाद, इसे लागू करने और टेस्ट करने की प्रोसेस शुरू की जा सकती है. यूनिट टेस्टिंग और सीआई वर्कफ़्लो के लिए, exec कमांड की मदद से, एक ही कॉल में एम्युलेटर शुरू किए जा सकते हैं, स्क्रिप्ट वाले टेस्ट चलाए जा सकते हैं, और एम्युलेटर बंद किए जा सकते हैं:

firebase emulators:exec "./testdir/test.sh"

अलग-अलग एम्युलेटर के बारे में ज़्यादा जानकारी पाना

अब आपको क्लाइंट-साइड के बुनियादी वर्कफ़्लो के बारे में पता चल गया है. अब Suite में मौजूद अलग-अलग एम्युलेटर के बारे में जानकारी देखें. इसमें, सर्वर-साइड ऐप्लिकेशन डेवलपमेंट के लिए इनका इस्तेमाल करने का तरीका भी शामिल है:

आगे क्या करना है?

ऊपर लिंक किए गए, खास एम्युलेटर से जुड़े लेख ज़रूर पढ़ें. इसके बाद: