Firebase Data Connect आपको एंड-टू-एंड प्रोटोटाइपिंग के लिए एक लोकल एम्युलेटर उपलब्ध कराता है. साथ ही, यह लगातार इंटिग्रेशन और लगातार डिप्लॉयमेंट (सीआई/सीडी) फ़्लो भी उपलब्ध कराता है:
- Data Connect एम्युलेटर, स्थानीय तौर पर इंटिग्रेट किए गए PGLite डेटाबेस इंस्टेंस के साथ इंटरैक्ट करता है. इससे आपको क्वेरी और म्यूटेशन का प्रोटोटाइप बनाने में मदद मिलती है. साथ ही, पूरी तरह से स्थानीय एनवायरमेंट में क्लाइंट कोड की जांच की जा सकती है.
- Data Connect एम्युलेटर का इस्तेमाल, बिना इंटरैक्टिव वाले काम के लिए भी किया जा सकता है. इससे ऑटोमेटेड टेस्ट किए जा सकते हैं. साथ ही, इसका इस्तेमाल CI/CD वर्कफ़्लो के साथ किया जा सकता है. यह तब काम आता है, जब आपके स्कीमा स्टेबल हों और आपको क्लाइंट-साइड कोड का प्रोटोटाइप बनाना हो और उसे टेस्ट करना हो.
इस गाइड में, क्विकस्टार्ट गाइड की तुलना में एमुलेटर को इंस्टॉल करने और इस्तेमाल करने के बारे में ज़्यादा जानकारी दी गई है.
Data Connect एम्युलेटर इंस्टॉल करना
Data Connect इमुलेटर का इस्तेमाल करने के लिए, Local Emulator Suite को इंस्टॉल करने से पहले, आपको इनकी ज़रूरत होगी:
- Node.js 18.0 या इसके बाद का वर्शन.
Firebase सीएलआई इंस्टॉल करना और प्रोजेक्ट डायरेक्ट्री सेट अप करना
इंस्टॉल करने की गाइड में दिए गए निर्देशों का पालन करके, Firebase सीएलआई इंस्टॉल करें. Data Connect एम्युलेटर में गड़बड़ियां ठीक करने और नई सुविधाएं जोड़ने का काम लगातार जारी है. इसलिए, इसे समय-समय पर अपडेट करना न भूलें.
अगर आपने पहले से ऐसा नहीं किया है, तो मौजूदा वर्किंग डायरेक्ट्री को Firebase प्रोजेक्ट के तौर पर शुरू करें. इसके लिए, प्रॉम्प्ट में दिए गए निर्देशों का पालन करके यह तय करें कि आपको किन प्रॉडक्ट का इस्तेमाल करना है:
firebase init
Local Emulator Suite कॉन्फ़िगरेशन सेट करना या उसमें बदलाव करना
अगर आपने Firebase VS Code एक्सटेंशन से Data Connect एम्युलेटर शुरू किया है, तो ज़रूरत पड़ने पर एम्युलेटर इंस्टॉल कर दिया गया होगा.
Firebase के चुने गए अन्य कॉम्पोनेंट के साथ-साथ, एम्युलेटर को मैन्युअल तरीके से इंस्टॉल करने के लिए, Firebase CLI का इस्तेमाल किया जा सकता है.Local Emulator Suite इस कमांड से कॉन्फ़िगरेशन विज़र्ड शुरू होता है. इसकी मदद से, अपनी पसंद के इम्यूलेटर चुने जा सकते हैं. साथ ही, उनसे जुड़ी इम्यूलेटर बाइनरी फ़ाइलें डाउनलोड की जा सकती हैं. इसके अलावा, अगर डिफ़ॉल्ट पोर्ट सही नहीं हैं, तो इम्यूलेटर पोर्ट सेट किए जा सकते हैं.
firebase init emulators
एम्युलेटर इंस्टॉल होने के बाद, अपडेट की जांच नहीं की जाती है. साथ ही, जब तक Firebase CLI वर्शन अपडेट नहीं किया जाता, तब तक कोई अन्य फ़ाइल अपने-आप डाउनलोड नहीं होगी.
कोई 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's pgvector और Vertex API इंटिग्रेशन का इस्तेमाल करके डेवलपमेंट के लिए एम्युलेटर का इस्तेमाल किया जा रहा है, तो Cloud Vertex API को कॉल सीधे किए जाते हैं. ये कॉल, Cloud SQL के Vertex इंटिग्रेशन के ज़रिए नहीं किए जाते. हालांकि, प्रोडक्शन एपीआई को कॉल अब भी किए जाते हैं. इसका मतलब है कि आपको असली Firebase प्रोजेक्ट का इस्तेमाल करना होगा. साथ ही,
demo-
प्रोजेक्ट का इस्तेमाल नहीं किया जा सकता. इसके अलावा, Vertex API के इस्तेमाल पर शुल्क लगेगा.