Firebase SQL Connect एंड-टू-एंड प्रोटोटाइपिंग के साथ-साथ लगातार इंटिग्रेशन और लगातार डिप्लॉयमेंट (सीआई/सीडी) फ़्लो के लिए, आपको लोकल एम्युलेटर की सुविधा देता है:
- SQL Connect एम्युलेटर, लोकल इंटिग्रेटेड PGLite डेटाबेस इंस्टेंस के साथ इंटरैक्ट करता है. इससे आपको क्वेरी और म्यूटेशन के प्रोटोटाइप बनाने और पूरी तरह से लोकल एनवायरमेंट में क्लाइंट कोड की जांच करने में मदद मिलती है.
- SQL Connect एम्युलेटर का इस्तेमाल, नॉन-इंटरैक्टिव काम के लिए भी किया जा सकता है. इसकी मदद से, ऑटोमेटेड टेस्ट चलाए जा सकते हैं. साथ ही, इसे सीआई/सीडी वर्कफ़्लो के साथ इस्तेमाल किया जा सकता है. यह तब काम का होता है, जब आपके स्कीमा स्टेबल हों और आपको क्लाइंट-साइड कोड का प्रोटोटाइप बनाना और उसकी जांच करनी हो.
इस गाइड में, एम्युलेटर को इंस्टॉल करने और इस्तेमाल करने के बारे में, क्विकस्टार्ट गाइड से ज़्यादा जानकारी दी गई है.
SQL Connect एम्युलेटर इंस्टॉल करना
SQL Connect एम्युलेटर का इस्तेमाल करने के लिए, Local Emulator Suite इंस्टॉल करने से पहले, आपको इनकी ज़रूरत होगी:
- Node.js का वर्शन 18.0 या इसके बाद का वर्शन.
Firebase CLI इंस्टॉल करना और प्रोजेक्ट डायरेक्ट्री सेट अप करना
Firebase CLI इंस्टॉल करें. इसके लिए, इंस्टॉल करने का तरीका बताने वाली गाइड में दिए गए निर्देशों का पालन करें. इसे समय-समय पर अपडेट करते रहें, क्योंकि SQL Connect एम्युलेटर में लगातार डेवलपमेंट किया जा रहा है. इसमें गड़बड़ियां ठीक की जाती हैं और नई सुविधाएं जोड़ी जाती हैं.
अगर आपने ऐसा नहीं किया है, तो मौजूदा वर्किंग डायरेक्ट्री को Firebase प्रोजेक्ट के तौर पर शुरू करें. इसके लिए, यह तय करने के लिए दिए गए निर्देशों का पालन करें कि किन प्रॉडक्ट का इस्तेमाल करना है:
firebase init
Local Emulator Suite कॉन्फ़िगरेशन सेट करना या उसमें बदलाव करना
अगर आपने SQL Connect VS Code एक्सटेंशन से SQL Connect एम्युलेटर शुरू किया है, तो ज़रूरत पड़ने पर एम्युलेटर इंस्टॉल कर दिया गया होगा.
आप Firebase सीएलआई का इस्तेमाल करके, एम्युलेटर को मैन्युअल तरीके से इंस्टॉल कर सकते हैं. इसके साथ-साथ, Local Emulator Suite के चुने गए अन्य कॉम्पोनेंट भी इंस्टॉल किए जा सकते हैं. इस कमांड से, कॉन्फ़िगरेशन विज़र्ड शुरू होता है. इसकी मदद से, अपनी पसंद के एम्युलेटर चुने जा सकते हैं, उनसे जुड़ी बाइनरी फ़ाइलें डाउनलोड की जा सकती हैं, और डिफ़ॉल्ट पोर्ट सही न होने पर, एम्युलेटर पोर्ट सेट किए जा सकते हैं.
firebase init emulatorsएम्युलेटर इंस्टॉल होने के बाद, अपडेट की जांच नहीं की जाती. साथ ही, Firebase CLI का वर्शन अपडेट करने तक, कोई भी फ़ाइल अपने-आप डाउनलोड नहीं होगी.
कोई Firebase प्रोजेक्ट चुनना
सेटअप फ़्लो में, Firebase CLI आपसे कोई Firebase प्रोजेक्ट चुनने या बनाने के लिए कहता है. अगर आपने Firebase console में SQL Connect के साथ सेट अप किया गया कोई मौजूदा प्रोजेक्ट चुना है, तो आपने वहां जो कॉन्फ़िगरेशन चुना था वह सुझाव के तौर पर दिखेगा.
एम्युलेटर सेट अप करना
एम्युलेटर को कॉन्फ़िगर करना
firebase init फ़्लो चलाने पर, आपको एम्युलेटर सेटअप के विकल्पों के बारे में जानकारी मिलेगी.
Local Emulator Suite में मौजूद अन्य एम्युलेटर की तरह, कॉन्फ़िगरेशन पैरामीटर
, लोकल प्रोजेक्ट फ़ाइलों में सेव होते हैं.Local Emulator Suite
- आपकी
firebase.jsonफ़ाइल में, एम्युलेटर पोर्ट असाइनमेंट शामिल होते हैं.emulators:uiकुंजी, SQL Connect एम्युलेटर पर लागू नहीं होती.
लोकल और प्रोडक्शन SQL Connect रिसॉर्स के साथ काम करना
अगर आपको पक्का करना है कि प्रोडक्शन रिसॉर्स पर कोई असर न पड़े, तो demo- projectID सेट करें. इसके अलावा, यह भी पक्का करें कि आपका क्लाइंट कोड, एम्युलेटर से कनेक्ट होने के लिए इंस्ट्रूमेंट किया गया हो. इस बारे में, अगले सेक्शन में बताया गया है.
एम्युलेटर शुरू करना
अगर आपको एम्युलेटर को नॉन-इंटरैक्टिव तरीके से चलाना है, तो exec विकल्प का इस्तेमाल करके इसे शुरू करें. उदाहरण के लिए, सीआई/सीडी वर्कफ़्लो के लिए.
firebase emulators:exec ./path/to/test-script.shअगर आपको क्लाइंट कोड में, पहले से तय की गई क्वेरी और म्यूटेशन इंटिग्रेट करने हैं और आपको क्लाइंट की जांच करने के लिए ही एम्युलेटर का इस्तेमाल करना है, तो इंटरैक्टिव काम के लिए start विकल्प का इस्तेमाल किया जा सकता है. SQL Connect VS Code एक्सटेंशन से भी एम्युलेटर शुरू किया जा सकता है.
firebase emulators:startएम्युलेटर से इंटरैक्ट करने के लिए, क्लाइंट कोड को इंस्ट्रूमेंट करना
SQL 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 यह सुझाव देता है:
- इन कामों को मैनेज करने के लिए, खास म्यूटेशन लिखना:
- सेटअप में, लोकल डेटाबेस इंस्टेंस में शुरुआती डेटा डालना.
- टीयरडाउन में, पोस्ट-टेस्ट डेटाबेस इंस्टेंस से, बदलाव किया गया डेटा मिटाना.
SQL Connect एम्युलेटर, प्रोडक्शन से कैसे अलग है
SQL Connect एम्युलेटर, सर्वर-साइड प्रॉडक्ट की कई सुविधाओं को सिम्युलेट करता है. हालांकि, कुछ अपवाद हैं जिनके बारे में आपको पता होना चाहिए:
- PGLite का वर्शन और इसका विस्तृत कॉन्फ़िगरेशन, आपके प्रोडक्शन Cloud SQL इंस्टेंस के वर्शन से अलग हो सकता है.
- अगर SQL Connect के
pgvector और Vertex API इंटिग्रेशन के साथ डेवलपमेंट करने के लिए, एम्युलेटर का इस्तेमाल किया जा रहा है, तो Cloud Vertex API को
सीधे कॉल किया जाता है. इसके लिए, Cloud SQL के Vertex इंटिग्रेशन का इस्तेमाल नहीं किया जाता. हालांकि, प्रोडक्शन एपीआई को अब भी कॉल किया जाता है. इसका मतलब है कि आपको असली Firebase प्रोजेक्ट का इस्तेमाल करना होगा. साथ ही,
demo-प्रोजेक्ट का इस्तेमाल नहीं किया जा सकता. इसके अलावा, Vertex API के लिए शुल्क भी देना होगा.