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 CLI का इस्तेमाल करके, एम्युलेटर को मैन्युअल तरीके से इंस्टॉल किया जा सकता है. साथ ही, Local Emulator Suite के चुने गए अन्य कॉम्पोनेंट भी इंस्टॉल किए जा सकते हैं. इस कमांड से, कॉन्फ़िगरेशन विज़र्ड शुरू होता है. इसकी मदद से, अपनी पसंद के एम्युलेटर चुने जा सकते हैं, उनसे जुड़ी बाइनरी फ़ाइलें डाउनलोड की जा सकती हैं, और अगर डिफ़ॉल्ट पोर्ट सही नहीं हैं, तो एम्युलेटर पोर्ट सेट किए जा सकते हैं.
firebase init emulatorsएम्युलेटर इंस्टॉल होने के बाद, अपडेट की जांच नहीं की जाती. साथ ही, Firebase CLI का वर्शन अपडेट करने तक, कोई भी अन्य डाउनलोड अपने-आप नहीं होगा.
कोई Firebase प्रोजेक्ट चुनना
सेटअप फ़्लो में, Firebase CLI आपसे कोई Firebase प्रोजेक्ट चुनने या बनाने के लिए कहता है. अगर आपने कोई ऐसा मौजूदा प्रोजेक्ट चुना है जिसे पहले ही सेट अप किया जा चुका है 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 के लिए शुल्क भी देना होगा.