अपने ऐप्लिकेशन को Realtime Database एम्युलेटर से कनेक्ट करने से पहले, पक्का करें कि आपने Firebase Local Emulator Suite के पूरे वर्कफ़्लो को समझ लिया हो, और आपने Local Emulator Suite को इंस्टॉल और कॉन्फ़िगर कर लिया हो. साथ ही, इसकी सीएलआई कमांड देख ली हों.
कोई Firebase प्रोजेक्ट चुनना
Firebase Local Emulator Suite, एक Firebase प्रोजेक्ट के लिए प्रॉडक्ट की नकल करता है.
इस्तेमाल किए जाने वाले प्रोजेक्ट को चुनने के लिए, एम्युलेटर शुरू करने से पहले, अपनी वर्किंग डायरेक्ट्री में CLI चलाएं.firebase use
इसके अलावा, हर एम्युलेटर कमांड में --project
फ़्लैग पास किया जा सकता है.
Local Emulator Suite, असली Firebase प्रोजेक्ट और डेमो प्रोजेक्ट के इम्यूलेशन के साथ काम करता है.
प्रोजेक्ट का टाइप | सुविधाएं | एम्युलेटर के साथ इस्तेमाल करना |
---|---|---|
रियल |
असली Firebase प्रोजेक्ट वह होता है जिसे आपने बनाया और कॉन्फ़िगर किया है. ऐसा ज़्यादातर Firebase कंसोल के ज़रिए किया जाता है. असली प्रोजेक्ट में लाइव संसाधन होते हैं. जैसे, डेटाबेस इंस्टेंस, स्टोरेज बकेट, फ़ंक्शन या Firebase प्रोजेक्ट के लिए सेट अप किया गया कोई अन्य संसाधन. |
असली Firebase प्रोजेक्ट के साथ काम करते समय, किसी भी या सभी प्रॉडक्ट के लिए एम्युलेटर चलाए जा सकते हैं. जिन प्रॉडक्ट के लिए इम्यूलेशन नहीं किया जा रहा है उनके लिए, आपके ऐप्लिकेशन और कोड, लाइव रिसोर्स (डेटाबेस इंस्टेंस, स्टोरेज बकेट, फ़ंक्शन वगैरह) के साथ इंटरैक्ट करेंगे. |
डेमो |
डेमो Firebase प्रोजेक्ट में, असली Firebase कॉन्फ़िगरेशन नहीं होता है. साथ ही, इसमें लाइव संसाधन भी नहीं होते हैं. इन प्रोजेक्ट को आम तौर पर कोडलैब या अन्य ट्यूटोरियल के ज़रिए ऐक्सेस किया जाता है. डेमो प्रोजेक्ट के आईडी में |
Firebase के डेमो प्रोजेक्ट के साथ काम करते समय, आपके ऐप्लिकेशन और कोड सिर्फ़ एम्युलेटर के साथ इंटरैक्ट करते हैं. अगर आपका ऐप्लिकेशन किसी ऐसे संसाधन से इंटरैक्ट करने की कोशिश करता है जिसके लिए कोई एम्युलेटर नहीं चल रहा है, तो वह कोड काम नहीं करेगा. |
हमारा सुझाव है कि जहां भी हो सके वहां डेमो प्रोजेक्ट का इस्तेमाल करें. इसके ये फ़ायदे हैं:
- सेटअप करना आसान है, क्योंकि बिना Firebase प्रोजेक्ट बनाए भी इम्यूलेटर चलाए जा सकते हैं
- ज़्यादा सुरक्षा मिलती है. ऐसा इसलिए, क्योंकि अगर आपका कोड गलती से नॉन-इम्युलेटेड (प्रोडक्शन) संसाधनों को चालू कर देता है, तो डेटा में बदलाव, इस्तेमाल, और बिलिंग की कोई संभावना नहीं होती
- ऑफ़लाइन मोड में बेहतर तरीके से काम करता है, क्योंकि SDK टूल के कॉन्फ़िगरेशन को डाउनलोड करने के लिए इंटरनेट का ऐक्सेस ज़रूरी नहीं है.
अपने ऐप्लिकेशन को एम्युलेटर से कम्यूनिकेट करने के लिए इंस्ट्रूमेंट करें
Android, Apple प्लैटफ़ॉर्म, और Web SDK
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); }
एम्युलेटर का इस्तेमाल करके, रीयलटाइम डेटाबेस के इवेंट से ट्रिगर होने वाले Cloud Functions को टेस्ट करने के लिए, कोई अतिरिक्त सेटअप करने की ज़रूरत नहीं होती. जब Realtime Database और Cloud Functions, दोनों के एम्युलेटर चल रहे होते हैं, तो वे एक साथ अपने-आप काम करते हैं.
Admin SDK सेकंड
FIREBASE_DATABASE_EMULATOR_HOST
एनवायरमेंट वैरिएबल सेट होने पर, Firebase Admin SDK अपने-आप Realtime Database एम्युलेटर से कनेक्ट हो जाते हैं:
export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"
अगर आपका कोड Cloud Functions एम्युलेटर में चल रहा है, तो initializeApp
को कॉल करते समय आपका प्रोजेक्ट आईडी और अन्य कॉन्फ़िगरेशन अपने-आप सेट हो जाएगा.
अगर आपको अपने Admin SDK कोड को किसी दूसरे एनवायरमेंट में चल रहे शेयर किए गए एम्युलेटर से कनेक्ट करना है, तो आपको वही प्रोजेक्ट आईडी सेट करना होगा जिसे आपने Firebase CLI का इस्तेमाल करके सेट किया था.
initializeApp
को सीधे तौर पर प्रोजेक्ट आईडी दिया जा सकता है या GCLOUD_PROJECT
एनवायरमेंट वैरिएबल सेट किया जा सकता है.
Node.js Admin SDK
admin.initializeApp({ projectId: "your-project-id" });
एनवायरमेंट वैरिएबल
export GCLOUD_PROJECT="your-project-id"
जांचों के बीच अपने डेटाबेस को मिटाना
ऐक्टिविटी के बीच Realtime Database को फ़्लश करने के लिए, डेटाबेस के रेफ़रंस को मिटाया जा सकता है. इस तरीके का इस्तेमाल, एम्युलेटर प्रोसेस को बंद करने के विकल्प के तौर पर किया जा सकता है.
Kotlin
// With a DatabaseReference, write null to clear the database. database.reference.setValue(null)
Java
// With a DatabaseReference, write null to clear the database. database.getReference().setValue(null);
Swift
// With a DatabaseReference, write nil to clear the database. Database.database().reference().setValue(nil);
Web
import { getDatabase, ref, set } from "firebase/database"; // With a database Reference, write null to clear the database. const db = getDatabase(); set(ref(db), null);
Web
// With a database Reference, write null to clear the database. firebase.database().ref().set(null);
ज़ाहिर है, आपके कोड को इस बात की पुष्टि का इंतज़ार करना चाहिए कि फ़्लश पूरा हो गया है या आपके प्लैटफ़ॉर्म की एसिंक्रोनस इवेंट हैंडलिंग सुविधाओं का इस्तेमाल करके फ़्लश नहीं हो सका.
इस तरह का कोई चरण लागू करने के बाद, अपने टेस्ट को क्रम से लगाया जा सकता है और अपने फ़ंक्शन को ट्रिगर किया जा सकता है. इससे आपको यह भरोसा रहेगा कि रन के बीच पुराना डेटा मिटा दिया जाएगा और नए बेसलाइन टेस्ट कॉन्फ़िगरेशन का इस्तेमाल किया जा रहा है.
डेटा इंपोर्ट और एक्सपोर्ट करना
डेटाबेस और Cloud Storage for Firebase एम्युलेटर की मदद से, चालू एम्युलेटर इंस्टेंस से डेटा एक्सपोर्ट किया जा सकता है. यूनिट टेस्ट या लगातार इंटिग्रेशन वाले वर्कफ़्लो में इस्तेमाल करने के लिए, डेटा का एक बेसलाइन सेट तय करें. इसके बाद, इसे टीम के साथ शेयर करने के लिए एक्सपोर्ट करें.
firebase emulators:export ./dir
जांच में, एम्युलेटर शुरू होने पर, बेसलाइन डेटा इंपोर्ट करें.
firebase emulators:start --import=./dir
एम्युलेटर को बंद होने पर डेटा एक्सपोर्ट करने का निर्देश दिया जा सकता है. इसके लिए, एक्सपोर्ट पाथ तय करें या --import
फ़्लैग को पास किए गए पाथ का इस्तेमाल करें.
firebase emulators:start --import=./dir --export-on-exit
डेटा इंपोर्ट और एक्सपोर्ट करने के ये विकल्प, firebase emulators:exec
कमांड के साथ भी काम करते हैं. ज़्यादा जानकारी के लिए, एम्युलेटर कमांड रेफ़रंस देखें.
सुरक्षा नियमों से जुड़ी गतिविधि को विज़ुअलाइज़ करना
प्रोटोटाइप और टेस्ट लूप पर काम करते समय, Local Emulator Suite की ओर से उपलब्ध कराए गए विज़ुअलाइज़ेशन टूल और रिपोर्ट का इस्तेमाल किया जा सकता है.
नियमों के आकलन को विज़ुअलाइज़ करना
अपने प्रोटोटाइप में सुरक्षा नियम जोड़ते समय, Local Emulator Suite टूल की मदद से उन्हें डीबग किया जा सकता है.
जांचों का सुइट चलाने के बाद, जांच कवरेज रिपोर्ट ऐक्सेस की जा सकती हैं. इनमें यह जानकारी होती है कि आपके हर नियम का आकलन कैसे किया गया. रिपोर्ट पाने के लिए, एम्युलेटर के चालू होने पर, उस पर मौजूद एंडपॉइंट को क्वेरी करें. ब्राउज़र के साथ काम करने वाले वर्शन के लिए, इस यूआरएल का इस्तेमाल करें:
http://localhost:9000/.inspect/coverage?ns=<database_name>
इससे आपके नियमों को एक्सप्रेशन और सबएक्सप्रेशन में बांटा जाता है. इन पर कर्सर घुमाकर, ज़्यादा जानकारी देखी जा सकती है. जैसे, नियमों को कितनी बार लागू किया गया और उनसे मिली वैल्यू. इस डेटा के रॉ JSON वर्शन के लिए, अपनी क्वेरी में यह यूआरएल शामिल करें:
http://localhost:9000/.inspect/coverage.json?ns=<database_name>
आगे क्या करना है?
- वीडियो के चुने गए सेट और इस्तेमाल के तरीके के बारे में ज़्यादा जानकारी देने वाले उदाहरणों के लिए, Firebase Emulator की ट्रेनिंग वाली प्लेलिस्ट देखें.
- सुरक्षा के नियमों की जांच और Firebase Test SDK से जुड़े ऐडवांस इस्तेमाल के मामलों की जांच करें: सुरक्षा के नियमों की जांच करना (Realtime Database).
- ट्रिगर किए गए फ़ंक्शन, Realtime Database के साथ इंटिग्रेट किए जाते हैं. इसलिए, Realtime Database एम्युलेटर के बारे में ज़्यादा जानने के लिए, फ़ंक्शन को स्थानीय तौर पर चलाना पर जाएं.Cloud Functions for Firebase