Catch up on highlights from Firebase at Google I/O 2023. Learn more

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

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

प्रोटोटाइप और परीक्षण

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

फायरबेस डेटाबेस और फ़ंक्शन एमुलेटर के बीच सहभागिता
डेटाबेस और क्लाउड फ़ंक्शंस एमुलेटर पूर्ण स्थानीय एमुलेटर सूट के हिस्से के रूप में।

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

आपके द्वारा अपने फायरबेस प्रोजेक्ट को स्थानीय रूप से आरंभ करने के बाद, स्थानीय एमुलेटर सूट का उपयोग करने वाले विकास चक्र में आमतौर पर तीन चरण होंगे:

  1. प्रोटोटाइप एमुलेटर और एमुलेटर सूट यूआई के साथ अंतःक्रियात्मक रूप से सुविधाएँ।

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

  3. एमुलेटर और कस्टम स्क्रिप्ट के साथ अपने परीक्षणों को स्वचालित करें।

स्थानीय रूप से एक Firebase प्रोजेक्ट को इनिशियलाइज़ करें

सुनिश्चित करें कि आपने सीएलआई स्थापित किया है या इसके नवीनतम संस्करण में अपडेट किया है

curl -sL firebase.tools | bash

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

firebase init

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

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

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

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

जब आप स्थानीय इम्यूलेटर सुइट को निम्न के साथ प्रारंभ करते हैं तो यह सब उपलब्ध होता है:

firebase emulators:start

हमारे काल्पनिक ऐप को प्रोटोटाइप करने के लिए, डेटाबेस में टेक्स्ट प्रविष्टियों को संशोधित करने के लिए एक बुनियादी क्लाउड फ़ंक्शन सेट अप और परीक्षण करें, और दोनों उस डेटाबेस को इम्यूलेटर सुइट UI में ट्रिगर करने के लिए बनाएं और पॉप्युलेट करें।

  1. अपनी प्रोजेक्ट डायरेक्टरी में functions/index.js फाइल को एडिट करके डेटाबेस राइट्स द्वारा ट्रिगर किया गया क्लाउड फंक्शन बनाएं। मौजूदा फ़ाइल की सामग्री को निम्न स्निपेट से बदलें। यह फ़ंक्शन messages संग्रह में दस्तावेज़ों में परिवर्तनों को सुनता है, दस्तावेज़ के original फ़ील्ड की सामग्री को अपरकेस में कनवर्ट करता है, और परिणाम को उस दस्तावेज़ के uppercase फ़ील्ड में संग्रहीत करता है।
  2.   const functions = require('firebase-functions');
    
      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. firebase emulators:start । क्लाउड फ़ंक्शंस और डेटाबेस एमुलेटर शुरू हो जाते हैं, स्वचालित रूप से इंटरऑपरेट करने के लिए कॉन्फ़िगर किए जाते हैं।
  4. अपने ब्राउज़र में UI को http://localhost:4000 पर देखें। पोर्ट 4000 यूआई के लिए डिफ़ॉल्ट है, लेकिन फायरबेस सीएलआई द्वारा टर्मिनल संदेशों के आउटपुट की जांच करें। उपलब्ध एमुलेटर की स्थिति पर ध्यान दें। हमारे मामले में, क्लाउड फ़ंक्शंस और क्लाउड फायरस्टार एमुलेटर चल रहे होंगे।
    मेरी छवि
  5. UI में, Firestore > Data टैब पर, संग्रह प्रारंभ करें पर क्लिक करें और messages संग्रह में एक नया दस्तावेज़ बनाने के लिए संकेतों का पालन करें, फ़ील्ड नाम original और मूल्य test के साथ। यह हमारे क्लाउड फंक्शन को ट्रिगर करता है। ध्यान दें कि शीघ्र ही एक नया uppercase फ़ील्ड प्रकट होता है, जो स्ट्रिंग "TEST" से भर जाता है।
    मेरी छविमेरी छवि
  6. Firestore > Requests टैब पर, उन अनुरोधों को पूरा करने के हिस्से के रूप में किए गए सभी Firebase सुरक्षा नियमों के मूल्यांकन सहित, अपने नकली डेटाबेस के लिए किए गए अनुरोधों की जांच करें।
  7. यह पुष्टि करने के लिए लॉग टैब की जांच करें कि आपका फ़ंक्शन त्रुटियों में नहीं चला क्योंकि यह डेटाबेस को अपडेट करता है।

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

अपने ऐप को एमुलेटर से कनेक्ट करें

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

याद रखें कि स्थानीय इम्यूलेटर सूट एक स्थानीय विकास उपकरण है। आपके उत्पादन डेटाबेस में लिखे गए कार्यों को आप स्थानीय रूप से प्रोटोटाइप कर रहे कार्यों को ट्रिगर नहीं करेंगे।

अपने ऐप को डेटाबेस में लिखने के लिए स्विच करने के लिए, आपको क्लाउड फायरस्टोर एमुलेटर पर अपनी टेस्ट क्लास या इन-ऐप कॉन्फ़िगरेशन को इंगित करने की आवश्यकता होगी।

Kotlin+KTX
// 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);
तीव्र
let settings = Firestore.firestore().settings
settings.host = "127.0.0.1:8080"
settings.isPersistenceEnabled = false 
settings.isSSLEnabled = false
Firestore.firestore().settings = settings

Web modular API

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

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

Web namespaced API

// 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"

अधिक गहराई में अलग-अलग एमुलेटर का अन्वेषण करें

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

आगे क्या?

ऊपर जुड़े विशिष्ट एमुलेटर से संबंधित विषयों को पढ़ना सुनिश्चित करें। तब: