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


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.firestore.document('/messages/{documentId}')
          .onCreate((snap, context) => {
            const original = snap.data().original;
            console.log('Uppercasing', context.params.documentId, original);
            const uppercase = original.toUpperCase();
            return snap.ref.set({uppercase}, {merge: true});
          });
      
  3. Local Emulator Suite को firebase emulators:start की मदद से लॉन्च करें. Cloud Functions और डेटाबेस एम्युलेटर शुरू हो जाते हैं. ये एक-दूसरे के साथ काम करने के लिए अपने-आप कॉन्फ़िगर हो जाते हैं.
  4. अपने ब्राउज़र में http://localhost:4000 पर यूज़र इंटरफ़ेस देखें. पोर्ट 4000, यूज़र इंटरफ़ेस (यूआई) के लिए डिफ़ॉल्ट पोर्ट है. हालांकि, Firebase सीएलआई से मिले टर्मिनल मैसेज की जांच करें. उपलब्ध एम्युलेटर की स्थिति नोट करें. हमारे मामले में, Cloud Functions और Cloud Firestore एम्युलेटर चालू रहेंगे.
    मेरी इमेज
  5. यूज़र इंटरफ़ेस (यूआई) में, Firestore > डेटा टैब पर, कलेक्शन शुरू करें पर क्लिक करें. इसके बाद, निर्देशों का पालन करके messages कलेक्शन में एक नया दस्तावेज़ बनाएं. इसमें फ़ील्ड का नाम original और वैल्यू test होनी चाहिए. इससे हमारा क्लाउड फ़ंक्शन ट्रिगर होता है. देखें कि कुछ समय बाद एक नया uppercase फ़ील्ड दिखता है. इसमें "TEST" स्ट्रिंग अपने-आप भर जाती है.
    मेरी इमेज मेरी इमेज
  6. Firestore > अनुरोध टैब पर जाकर, अपने नकली डेटाबेस से किए गए अनुरोधों की जांच करें. इसमें वे सभी Firebase Security Rules आकलन भी शामिल हैं जो उन अनुरोधों को पूरा करने के लिए किए गए थे.
  7. लॉग टैब में जाकर देखें कि डेटाबेस को अपडेट करते समय, आपके फ़ंक्शन में कोई गड़बड़ी तो नहीं हुई.

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

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

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

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

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

Kotlin
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
val firestore = Firebase.firestore
firestore.useEmulator("10.0.2.2", 8080)

firestore.firestoreSettings = firestoreSettings {
    isPersistenceEnabled = false
}
Java
// 10.0.2.2 is the special IP address to connect to the 'localhost' of
// the host computer from an Android emulator.
FirebaseFirestore firestore = FirebaseFirestore.getInstance();
firestore.useEmulator("10.0.2.2", 8080);

FirebaseFirestoreSettings settings = new FirebaseFirestoreSettings.Builder()
        .setPersistenceEnabled(false)
        .build();
firestore.setFirestoreSettings(settings);
Swift
let settings = Firestore.firestore().settings
settings.host = "127.0.0.1:8080"
settings.cacheSettings = MemoryCacheSettings()
settings.isSSLEnabled = false
Firestore.firestore().settings = settings

Web

import { getFirestore, connectFirestoreEmulator } from "firebase/firestore";

// firebaseApps previously initialized using initializeApp()
const db = getFirestore();
connectFirestoreEmulator(db, '127.0.0.1', 8080);

Web

// Firebase previously initialized using firebase.initializeApp().
var db = firebase.firestore();
if (location.hostname === "localhost") {
  db.useEmulator("127.0.0.1", 8080);
}

कस्टम स्क्रिप्ट की मदद से, अपने टेस्ट अपने-आप होने की सुविधा चालू करना

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

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

हर एम्युलेटर के बारे में ज़्यादा जानें

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

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

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