获取我们在 Firebase 峰会上发布的所有信息,了解 Firebase 可如何帮助您加快应用开发速度并满怀信心地运行应用。了解详情

अपने ऐप को रीयलटाइम डेटाबेस एमुलेटर से कनेक्ट करें

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

एक फायरबेस प्रोजेक्ट चुनें

फायरबेस लोकल इम्यूलेटर सुइट एकल फायरबेस प्रोजेक्ट के लिए उत्पादों का अनुकरण करता है।

उपयोग करने के लिए प्रोजेक्ट का चयन करने के लिए, आप एमुलेटर शुरू करने से पहले, CLI रन firebase use करें। या, आप प्रत्येक एमुलेटर कमांड को --project फ्लैग पास कर सकते हैं।

स्थानीय इम्यूलेटर सूट वास्तविक फायरबेस परियोजनाओं और डेमो परियोजनाओं के अनुकरण का समर्थन करता है।

प्रोजेक्ट का प्रकार विशेषताएं एमुलेटर के साथ प्रयोग करें
असली

एक वास्तविक फायरबेस प्रोजेक्ट वह है जिसे आपने बनाया और कॉन्फ़िगर किया है (सबसे अधिक संभावना फायरबेस कंसोल के माध्यम से)।

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

वास्तविक फायरबेस परियोजनाओं के साथ काम करते समय, आप किसी भी या सभी समर्थित उत्पादों के लिए एमुलेटर चला सकते हैं।

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

डेमो

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

डेमो प्रोजेक्ट के लिए प्रोजेक्ट आईडी में demo- -प्रीफ़िक्स होता है।

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

हम अनुशंसा करते हैं कि आप जहाँ भी संभव हो डेमो प्रोजेक्ट का उपयोग करें। लाभों में शामिल हैं:

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

एमुलेटर से बात करने के लिए अपने ऐप को इंस्ट्रुमेंट करें

Android, Apple प्लेटफ़ॉर्म और वेब SDKs

रीयलटाइम डेटाबेस के साथ इंटरैक्ट करने के लिए अपना इन-ऐप कॉन्फिगरेशन या टेस्ट क्लास सेट अप करें।

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);
तीव्र
    // In almost all cases the ns (namespace) is your project ID.
let db = Database.database(url:"http://localhost:9000?ns=YOUR_DATABASE_NAMESPACE")

Web version 9

import { getDatabase, connectDatabaseEmulator } from "firebase/database";

const db = getDatabase();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  connectDatabaseEmulator(db, "localhost", 9000);
} 

Web version 8

var db = firebase.database();
if (location.hostname === "localhost") {
  // Point to the RTDB emulator running on localhost.
  db.useEmulator("localhost", 9000);
} 

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

व्यवस्थापक एसडीके

जब FIREBASE_DATABASE_EMULATOR_HOST परिवेश चर सेट किया जाता है, तो Firebase व्यवस्थापक SDK स्वचालित रूप से रीयलटाइम डेटाबेस एमुलेटर से कनेक्ट हो जाते हैं:

export FIREBASE_DATABASE_EMULATOR_HOST="localhost:9000"

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

यदि आप चाहते हैं कि आपका व्यवस्थापक SDK कोड किसी अन्य वातावरण में चल रहे साझा एमुलेटर से कनेक्ट हो, तो आपको उसी प्रोजेक्ट आईडी को निर्दिष्ट करना होगा जिसे आपने Firebase CLI का उपयोग करके सेट किया था । आप सीधे ऐप को initializeApp करने के लिए प्रोजेक्ट आईडी पास कर सकते हैं या GCLOUD_PROJECT पर्यावरण चर सेट कर सकते हैं।

नोड.जेएस एडमिन एसडीके
admin.initializeApp({ projectId: "your-project-id" });
पर्यावरणपरिवर्ती तारक
export GCLOUD_PROJECT="your-project-id"

परीक्षणों के बीच अपना डेटाबेस साफ़ करें

गतिविधियों के बीच रीयलटाइम डेटाबेस को फ़्लश करने के लिए, आप डेटाबेस संदर्भ को साफ़ कर सकते हैं। आप इस दृष्टिकोण का उपयोग केवल एमुलेटर प्रक्रिया को बंद करने के विकल्प के रूप में कर सकते हैं।

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);
तीव्र
// With a DatabaseReference, write nil to clear the database.
    Database.database().reference().setValue(nil);

Web version 9

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 version 8

// With a database Reference, write null to clear the database.
firebase.database().ref().set(null);

स्वाभाविक रूप से, आपके कोड को इस बात की पुष्टि का इंतजार करना चाहिए कि आपके प्लेटफॉर्म की एसिंक्रोनस इवेंट हैंडलिंग सुविधाओं का उपयोग करके फ्लश समाप्त हो गया है या विफल हो गया है।

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

आयात और निर्यात डेटा

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

firebase emulators:export ./dir

परीक्षणों में, एमुलेटर स्टार्टअप पर, बेसलाइन डेटा आयात करें।

firebase emulators:start --import=./dir

आप एम्यूलेटर को शटडाउन पर डेटा निर्यात करने का निर्देश दे सकते हैं, या तो एक निर्यात पथ निर्दिष्ट कर सकते हैं या बस --import ध्वज को दिए गए पथ का उपयोग कर सकते हैं।

firebase emulators:start --import=./dir --export-on-exit

ये डेटा आयात और निर्यात विकल्प firebase emulators:exec आदेश भी। अधिक के लिए, एमुलेटर कमांड संदर्भ देखें।

सुरक्षा नियम गतिविधि की कल्पना करें

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

नियमों के मूल्यांकन की कल्पना करें

जैसे ही आप अपने प्रोटोटाइप में सुरक्षा नियम जोड़ते हैं, आप उन्हें स्थानीय एमुलेटर सूट टूल से डिबग कर सकते हैं।

परीक्षणों का एक सूट चलाने के बाद, आप परीक्षण कवरेज रिपोर्ट तक पहुंच सकते हैं जो दिखाती है कि आपके प्रत्येक नियम का मूल्यांकन कैसे किया गया था। रिपोर्ट प्राप्त करने के लिए, एम्यूलेटर के चलने के दौरान एक खुला समापन बिंदु पूछें। ब्राउज़र-अनुकूल संस्करण के लिए, निम्न URL का उपयोग करें:

http://localhost:9000/.inspect/coverage?ns=<database_name>

यह आपके नियमों को अभिव्यक्तियों और उप-अभिव्यक्तियों में विभाजित करता है जिन्हें आप अधिक जानकारी के लिए माउसओवर कर सकते हैं, जिसमें निष्पादन की संख्या और लौटाए गए मान शामिल हैं। इस डेटा के अपरिष्कृत JSON संस्करण के लिए, निम्न URL को अपनी क्वेरी में शामिल करें:

http://localhost:9000/.inspect/coverage.json?ns=<database_name>

आगे क्या?