अपने ऐप्लिकेशन को Realtime Database एम्युलेटर से कनेक्ट करने से पहले, पक्का करें कि आपको पूरे Firebase Local Emulator Suite वर्कफ़्लो के बारे में जानकारी है, और यह कि आप इंस्टॉल और कॉन्फ़िगर Local Emulator Suite और इसके सीएलआई निर्देशों को देखें.
कोई Firebase प्रोजेक्ट चुनें
Firebase Local Emulator Suite, किसी एक Firebase प्रोजेक्ट के लिए प्रॉडक्ट को एम्युलेट करता है.
सीएलआई रन में, एम्युलेटर शुरू करने से पहले, इस्तेमाल करने के लिए प्रोजेक्ट चुनने के लिए
firebase use
आपकी मौजूदा डायरेक्ट्री में मौजूद है. या फिर,
हर एम्युलेटर के लिए, --project
फ़्लैग
आदेश.
Local Emulator Suite, रीयल Firebase प्रोजेक्ट को एम्युलेट करने के साथ-साथ डेमो प्रोजेक्ट.
प्रोजेक्ट का टाइप | सुविधाएं | एम्युलेटर के साथ इस्तेमाल करें |
---|---|---|
रीयल |
असली Firebase प्रोजेक्ट वह होता है जिसे आपने बनाया और कॉन्फ़िगर किया है (सबसे ज़्यादा Firebase कंसोल के ज़रिए). असल प्रोजेक्ट में लाइव संसाधन होते हैं, जैसे कि डेटाबेस इंस्टेंस, स्टोरेज बकेट, फ़ंक्शन या उस Firebase के लिए सेट अप किया गया कोई भी अन्य संसाधन प्रोजेक्ट. |
रीयल Firebase प्रोजेक्ट के साथ काम करते समय, किसी भी इस्तेमाल किए जा सकने वाले सभी प्रॉडक्ट का इस्तेमाल किया जा सकता है. जिन प्रॉडक्ट को एम्युलेट नहीं किया जा रहा है उनके लिए, आपके ऐप्लिकेशन और कोड लाइव संसाधन (डेटाबेस इंस्टेंस, स्टोरेज) के साथ इंटरैक्ट करें बकेट, फ़ंक्शन वगैरह). |
डेमो |
डेमो Firebase प्रोजेक्ट में कोई वास्तविक Firebase कॉन्फ़िगरेशन नहीं होता और कोई लाइव संसाधन नहीं. इन प्रोजेक्ट को आम तौर पर कोडलैब से ऐक्सेस किया जाता है या अन्य ट्यूटोरियल. डेमो प्रोजेक्ट के प्रोजेक्ट आईडी में |
डेमो Firebase प्रोजेक्ट के साथ काम करते समय, आपके ऐप्लिकेशन और कोड सिर्फ़ एम्युलेटर. अगर आपका ऐप्लिकेशन किसी संसाधन का इस्तेमाल करता है जिसके लिए एम्युलेटर नहीं चल रहा है, तो वह कोड काम नहीं करेगा. |
हमारा सुझाव है कि जहां भी मुमकिन हो, डेमो प्रोजेक्ट का इस्तेमाल करें. सदस्यता के साथ यहां दिए गए फ़ायदे मिलते हैं:
- सेटअप करना आसान है. इसकी वजह यह है कि एम्युलेटर को चलाने के लिए, आपको कोई Firebase प्रोजेक्ट
- बेहतर सुरक्षा, क्योंकि अगर आपका कोड गलती से किसी ऐसे प्लैटफ़ॉर्म पर शुरू हो जाता है जो सिम्युलेट नहीं किया गया है (प्रोडक्शन) में उपलब्ध संसाधनों के लिए, डेटा को बदलने, इस्तेमाल, और बिलिंग की संभावना नहीं है
- बेहतर ऑफ़लाइन सहायता, क्योंकि देखने के लिए इंटरनेट ऐक्सेस करने की ज़रूरत नहीं होती अपने SDK टूल का कॉन्फ़िगरेशन डाउनलोड करें.
एम्युलेटर से बात करने के लिए, अपने ऐप्लिकेशन को इंस्टॉल करें
Android, Apple प्लैटफ़ॉर्म, और Web SDK
इन-ऐप्लिकेशन कॉन्फ़िगरेशन या टेस्ट क्लास सेट अप करें, ताकि Realtime Database के बारे में ज़्यादा जानें.
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 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 फ़ंक्शन की जांच करने के लिए, किसी दूसरे सेटअप की ज़रूरत नहीं होती एम्युलेटर का इस्तेमाल करें. जब रीयलटाइम डेटाबेस और Cloud Functions एम्युलेटर तो वे अपने आप एक साथ काम करते हैं.
Admin SDK सेकंड
जब Firebase Admin SDK अपने-आप Realtime Database एम्युलेटर से कनेक्ट हो जाते हैं, तब ऐसा होता है
FIREBASE_DATABASE_EMULATOR_HOST
एनवायरमेंट वैरिएबल सेट है:
export FIREBASE_DATABASE_EMULATOR_HOST="127.0.0.1:9000"
अगर आपका कोड, Cloud Functions एम्युलेटर के अंदर चल रहा है, तो आपका प्रोजेक्ट आईडी
initializeApp
पर कॉल करने पर, अन्य कॉन्फ़िगरेशन अपने-आप सेट हो जाएंगे.
अगर आपको अपना Admin SDK कोड, किसी ऐसे एम्युलेटर से कनेक्ट करना है जो इसके साथ चल रहा है
किसी अन्य एनवायरमेंट के लिए, आपको वही प्रोजेक्ट आईडी बताना होगा जिसे आपने Firebase सीएलआई का इस्तेमाल करके सेट किया था.
प्रोजेक्ट आईडी को सीधे initializeApp
में पास किया जा सकता है या
GCLOUD_PROJECT
एनवायरमेंट वैरिएबल.
Node.js का एडमिन SDK
admin.initializeApp({ projectId: "your-project-id" });
एनवायरमेंट वैरिएबल
export GCLOUD_PROJECT="your-project-id"
अलग-अलग टेस्ट के बीच अपना डेटाबेस मिटाएं
गतिविधियों के बीच Realtime Database को फ़्लश करने के लिए, डेटाबेस का रेफ़रंस मिटाया जा सकता है. एम्युलेटर प्रोसेस को बंद करने के विकल्प के तौर पर, इस तरीके का इस्तेमाल किया जा सकता है.
Kotlin+KTX
// 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
निर्देश भी. ज़्यादा जानकारी के लिए, इसे देखें
emulator निर्देश का रेफ़रंस.
सुरक्षा के नियमों से जुड़ी गतिविधि देखें
प्रोटोटाइप और टेस्ट लूप पर काम करते समय, विज़ुअलाइज़ेशन टूल इस्तेमाल किए जा सकते हैं. और ये रिपोर्ट, Local Emulator Suite से मिलती हैं.
नियमों के आकलन को विज़ुअलाइज़ करना
जैसे ही आप अपने प्रोटोटाइप में सुरक्षा के नियम जोड़ते हैं, आप उन्हें इससे डिबग कर सकते हैं Local Emulator Suite टूल.
टेस्ट का सुइट चलाने के बाद, आप उन टेस्ट कवरेज रिपोर्ट को ऐक्सेस कर सकते हैं जिनमें आपके हर नियम का आकलन कैसे किया गया. रिपोर्ट पाने के लिए, बिना अनुमति के सार्वजनिक की गई क्वेरी की क्वेरी करें जब तक एम्युलेटर चल रहा हो, तब तक यह आखिरी हिस्से पर मौजूद है. ब्राउज़र-फ़्रेंडली वर्शन के लिए, निम्न URL का उपयोग करें:
http://localhost:9000/.inspect/coverage?ns=<database_name>
इससे आपके नियम, एक्सप्रेशन और सब-एक्सप्रेशन में बंट जाते हैं. निष्पादन और मानों की संख्या सहित और जानकारी के लिए माउसओवर वापस किया गया. इस डेटा के रॉ JSON वर्शन के लिए, यहां दिया गया यूआरएल आपकी क्वेरी:
http://localhost:9000/.inspect/coverage.json?ns=<database_name>
आगे क्या करना है?
- चुनिंदा वीडियो के सेट और इस्तेमाल करने के तरीकों के ज़्यादा उदाहरणों के लिए, Firebase एम्युलेटर ट्रेनिंग प्लेलिस्ट देखें.
- सुरक्षा के नियमों की जांच और Firebase टेस्ट SDK टूल से जुड़े बेहतर इस्तेमाल के उदाहरणों की जांच करें: सुरक्षा के नियम की जांच (रीयल टाइम डेटाबेस).
- ट्रिगर किए गए फ़ंक्शन, आम तौर पर Realtime Database के साथ इंटिग्रेशन होते हैं. इसलिए, जानें Cloud Functions for Firebase एम्युलेटर के बारे में ज़्यादा जानकारी यहां देखें फ़ंक्शन स्थानीय तौर पर चलाएं.