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


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

प्रोटोटाइप बनाना और उसकी जांच करना

Local Emulator Suite में कई प्रॉडक्ट एम्युलेटर होते हैं. इनके बारे में 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 कॉन्फ़िगरेशन फ़ाइलें, डेटाबेस के लिए Firebase Security Rules डेफ़िनिशन फ़ाइल, क्लाउड फ़ंक्शन कोड वाली functions डायरेक्ट्री, और अन्य सहायक फ़ाइलें होंगी.

इंटरैक्टिव प्रोटोटाइप

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

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

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. लॉग टैब में जाकर देखें कि डेटाबेस को अपडेट करते समय, आपके फ़ंक्शन में कोई गड़बड़ी तो नहीं हुई.

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

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

जब इंटरैक्टिव प्रोटोटाइपिंग में अच्छी प्रोग्रेस हो जाए और आपने कोई डिज़ाइन चुन लिया हो, तब आपके पास सही SDK टूल का इस्तेमाल करके, अपने ऐप्लिकेशन में डेटाबेस ऐक्सेस करने का कोड जोड़ने का विकल्प होगा. आपको डेटाबेस टैब का इस्तेमाल जारी रखना होगा. साथ ही, फ़ंक्शन के लिए 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 में मौजूद अलग-अलग एम्युलेटर के बारे में ज़्यादा जानकारी पाएं. साथ ही, यह भी जानें कि सर्वर-साइड ऐप्लिकेशन डेवलपमेंट के लिए इनका इस्तेमाल कैसे किया जाता है:

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

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