Firebase Data Connect आपको शुरू से आखिर तक प्रोटोटाइपिंग के लिए, एक लोकल एम्युलेटर उपलब्ध कराता है. साथ ही, लगातार इंटिग्रेशन और लगातार डिप्लॉयमेंट (सीआई/सीडी) फ़्लो के लिए भी यह टूल उपलब्ध है:
- Data Connect एमुलेटर, स्थानीय इंटिग्रेट किए गए PGLite डेटाबेस इंस्टेंस के साथ इंटरैक्ट करता है. इससे आपको क्वेरी और म्यूटेशन का प्रोटोटाइप बनाने और पूरी तरह से स्थानीय एनवायरमेंट में क्लाइंट कोड की जांच करने में मदद मिलती है.
- Data Connect एमुलेटर का इस्तेमाल, इंटरैक्टिव काम के अलावा अन्य कामों के लिए भी किया जा सकता है. इसकी मदद से, ऑटोमेटेड टेस्ट चलाए जा सकते हैं. साथ ही, यह CI/CD वर्कफ़्लो के साथ इस्तेमाल करने के लिए सही है. यह तब काम आता है, जब आपके स्कीमा स्थिर हों. साथ ही, आपको प्रोटोटाइप बनाना हो और क्लाइंट-साइड कोड की जांच करनी हो.
इस गाइड में, क्विकस्टार्ट गाइड की तुलना में, एमुलेटर को इंस्टॉल करने और इस्तेमाल करने के बारे में ज़्यादा जानकारी दी गई है.
Data Connect एम्युलेटर इंस्टॉल करना
Data Connect एम्युलेटर का इस्तेमाल करने के लिए, Local Emulator Suite इंस्टॉल करने से पहले, आपको इनकी ज़रूरत होगी:
- Node.js का 18.0 या इसके बाद का वर्शन.
Firebase CLI इंस्टॉल करना और प्रोजेक्ट डायरेक्ट्री सेट अप करना
इंस्टॉल करने की गाइड का पालन करके, Firebase सीएलआई इंस्टॉल करें. इसे नियमित तौर पर अपडेट करना न भूलें, क्योंकि Data Connect एमुलेटर को लगातार अपडेट किया जा रहा है. इसमें गड़बड़ियों को ठीक करने और नई सुविधाएं जोड़ने के लिए काम किया जा रहा है.
अगर आपने अब तक ऐसा नहीं किया है, तो मौजूदा वर्किंग डायरेक्ट्री को Firebase प्रोजेक्ट के तौर पर शुरू करें. इसके लिए, प्रॉम्प्ट का पालन करके यह तय करें कि किन प्रॉडक्ट का इस्तेमाल करना है:
firebase init
Local Emulator Suite कॉन्फ़िगरेशन सेट करना या उसमें बदलाव करना
अगर आपने Firebase VS Code के एक्सटेंशन से Data Connect एम्युलेटर शुरू किया है, तो ज़रूरत पड़ने पर एम्युलेटर आपके लिए इंस्टॉल हो गया होगा.
Local Emulator Suite के चुने गए अन्य कॉम्पोनेंट के साथ-साथ, एम्युलेटर को मैन्युअल तरीके से इंस्टॉल करने के लिए, Firebase सीएलआई का इस्तेमाल किया जा सकता है. यह कमांड, कॉन्फ़िगरेशन विज़र्ड को शुरू करता है. इसकी मदद से, अपनी पसंद के एमुलेटर चुने जा सकते हैं, उनसे जुड़ी एमुलेटर बाइनरी फ़ाइलें डाउनलोड की जा सकती हैं, और डिफ़ॉल्ट पोर्ट सही न होने पर एमुलेटर पोर्ट सेट किए जा सकते हैं.
firebase init emulators
एम्युलेटर इंस्टॉल हो जाने के बाद, अपडेट की कोई जांच नहीं की जाती है. साथ ही, जब तक Firebase के सीएलआई वर्शन को अपडेट नहीं किया जाता, तब तक और अपने-आप डाउनलोड नहीं होंगे.
कोई Firebase प्रोजेक्ट चुनना
सेटअप फ़्लो में, Firebase CLI आपको Firebase प्रोजेक्ट चुनने या बनाने के लिए कहता है. अगर आपने Firebase कंसोल में Data Connect की मदद से कोई मौजूदा प्रोजेक्ट सेट अप किया है, तो आपको उसमें चुना गया कॉन्फ़िगरेशन सुझाया जाएगा.
एम्युलेटर सेट अप करना
एम्युलेटर कॉन्फ़िगर करना
firebase init
फ़्लो को चलाने पर, आपको एम्युलेटर को सेटअप करने के विकल्प देखने को मिलेंगे.
Local Emulator Suite में अन्य एम्युलेटर की तरह, कॉन्फ़िगरेशन पैरामीटर
लोकल प्रोजेक्ट फ़ाइलों में स्टोर किए जाते हैं.
- आपकी
firebase.json
फ़ाइल में, एमुलेटर पोर्ट असाइनमेंट शामिल हैं.emulators:ui
कुंजी, Data Connect एमुलेटर पर लागू नहीं होती.
स्थानीय और प्रोडक्शन Data Connect संसाधनों के साथ काम करना
अगर आपको यह पक्का करना है कि प्रोडक्शन रिसॉर्स पर असर न पड़े, तो demo-
projectID सेट करें या पक्का करें कि आपके क्लाइंट कोड को एमुलेटर से कनेक्ट करने के लिए इंस्ट्रूमेंट किया गया हो. इस बारे में अगले सेक्शन में बताया गया है.
एम्युलेटर शुरू करना
अगर एम्युलेटर को इंटरैक्टिव तरीके से नहीं चलाया जा रहा है, जैसे कि CI/CD
वर्कफ़्लो के लिए, तो इसे exec
विकल्प से शुरू करें.
firebase emulators:exec ./path/to/test-script.sh
अगर क्लाइंट कोड में पहले से तय की गई क्वेरी और म्यूटेशन इंटिग्रेट किए जा रहे हैं और क्लाइंट की जांच के लिए खास तौर पर एमुलेटर का इस्तेमाल किया जा रहा है, तो इंटरैक्टिव काम के लिए start
विकल्प का इस्तेमाल किया जा सकता है. VS Code एक्सटेंशन से भी एमुलेटर को शुरू किया जा सकता है.
firebase emulators:start
एमुलेटर से बात करने के लिए, अपने क्लाइंट कोड को इंस्ट्रूमेंट करना
Data Connect एम्युलेटर के साथ इंटरैक्ट करने के लिए, अपना इन-ऐप्लिकेशन कॉन्फ़िगरेशन या टेस्ट क्लास सेट अप करें. इसके बारे में, नीचे बताया गया है.
JavaScript
import { initializeApp } from "firebase/app"; import { connectorConfig } from "@name-of-package"; import { connectDataConnectEmulator, getDataConnect } from 'firebase/data-connect'; // TODO: Replace the following with your app's Firebase project configuration const firebaseConfig = { //... }; const app = initializeApp(firebaseConfig); const dataConnect = getDataConnect(app, connectorConfig); connectDataConnectEmulator(dataConnect, "localhost", 9399); // Make calls from your app
Kotlin Android
val connector = MoviesConnector.instance // Connect to the emulator on "10.0.2.2:9399" connector.dataConnect.useEmulator() // (Alternatively) if you're running your emulator on non-default port: connector.dataConnect.useEmulator(port = 9999) // Make calls from your app
iOS
let connector = DataConnect.dataConnect(DefaultConnectorClient.connectorConfig) // Connect to the emulator on "127.0.0.1:9399" connector.useEmulator() // (alternatively) if you're running your emulator on non-default port: connector.useEmulator(port: 9999) // Make calls from your app
टेस्ट करने और लगातार इंटिग्रेशन के लिए, एम्युलेटर का इस्तेमाल करें
कंटेनर में मौजूद Local Emulator Suite इमेज चलाना
आम तौर पर, सीआई सेटअप में कंटेनर के साथ Local Emulator Suite को इंस्टॉल करना और कॉन्फ़िगर करना आसान होता है.
ध्यान देने वाली कुछ बातें:
- एम्युलेटर बाइनरी,
~/.cache/firebase/emulators/
पर इंस्टॉल और कैश मेमोरी में सेव की जाती हैं. बार-बार डाउनलोड होने से बचने के लिए, इस पाथ को अपने सीआई कैश मेमोरी कॉन्फ़िगरेशन में जोड़ा जा सकता है. - अगर आपकी रिपॉज़िटरी में
firebase.json
फ़ाइल नहीं है, तो आपको यह बताने के लिए कि कौनसे एमुलेटर शुरू करने हैं,emulators:start
याemulators:exec
कमांड में कमांड लाइन आर्ग्युमेंट जोड़ना होगा. उदाहरण के लिए,--only dataconnect
.
टेस्ट के बीच अपने डेटाबेस को मिटाना
एक टेस्ट के बाद दूसरे टेस्ट को शुरू करने से पहले, Firebase अपने टेस्टिंग एनवायरमेंट को रीसेट करने का सुझाव देता है. इसके लिए, यह तरीका अपनाएं:
- इन कामों को करने के लिए, खास म्यूटेशन लिखना:
- सेटअप में, किसी स्थानीय डेटाबेस इंस्टेंस में शुरुआती डेटा डालें.
- टियरडाउन में, टेस्ट के बाद के डेटाबेस इंस्टेंस से बदला गया डेटा मिटाएं.
Data Connect एम्युलेटर, प्रोडक्शन से किस तरह अलग है
Data Connect एमुलेटर, सर्वर-साइड प्रॉडक्ट की कई सुविधाओं को सिम्युलेट करता है. हालांकि, इसके कुछ अपवाद हैं:
- PGLite का वर्शन और ज़्यादा जानकारी वाला कॉन्फ़िगरेशन, आपके प्रोडक्शन Cloud SQL इंस्टेंस के वर्शन से अलग हो सकता है.
- अगर Data Connect के pgvector और Vertex API इंटिग्रेशन के साथ डेवलप करने के लिए, एम्युलेटर का इस्तेमाल किया जा रहा है, तो Cloud Vertex API को सीधे तौर पर किए जाने वाले कॉल, Cloud SQL के Vertex इंटिग्रेशन के बजाय सीधे किए जाएंगे. हालांकि, प्रोडक्शन एपीआई को अब भी कॉल किया जाता है. इसका मतलब है कि आपको किसी असली Firebase प्रोजेक्ट का इस्तेमाल करना होगा,
demo-
प्रोजेक्ट का इस्तेमाल नहीं किया जा सकता. साथ ही, Vertex API के लिए शुल्क लिया जाएगा.