Firebase SQL Connect udostępnia lokalny emulator do prototypowania kompleksowego oraz przepływów trybu ciągłej integracji i ciągłego wdrażania (CI/CD):
- Emulator SQL Connect wchodzi w interakcję z lokalną zintegrowaną instancją bazy danych PGLite, aby umożliwić Ci tworzenie prototypów zapytań i mutacji oraz testowanie kodu klienta w całkowicie lokalnym środowisku.
- SQL Connect Emulator może być też używany do pracy nieinteraktywnej. Umożliwia przeprowadzanie automatycznych testów i jest odpowiedni do używania w przypadku przepływów pracy CI/CD. Jest to przydatne, gdy schematy są stabilne i chcesz prototypować oraz testować kod po stronie klienta.
Ten przewodnik zawiera bardziej szczegółowe informacje o instalacji i używaniu emulatora niż krótki przewodnik.
Instalowanie emulatora SQL Connect
Przed zainstalowaniem Local Emulator Suite, aby używać SQL Connect emulatora, musisz mieć:
- Node.js w wersji 18.0 lub nowszej.
Zainstaluj interfejs wiersza poleceń Firebase i skonfiguruj katalog projektu.
Zainstaluj interfejs wiersza poleceń Firebase, postępując zgodnie z instrukcją instalacji. Pamiętaj o regularnych aktualizacjach, ponieważ emulatorSQL Connect jest w trakcie aktywnego rozwoju, a jego twórcy wprowadzają poprawki błędów i nowe funkcje.
Jeśli jeszcze tego nie zrobiono, zainicjuj bieżący katalog roboczy jako projekt w Firebase, postępując zgodnie z instrukcjami, aby określić, z których usług chcesz korzystać:
firebase init
Ustawianie lub modyfikowanie konfiguracji Local Emulator Suite
Jeśli emulator SQL Connect został uruchomiony z poziomu rozszerzenia SQL Connect VS Code, w razie potrzeby został zainstalowany.
Za pomocą interfejsu wiersza poleceń Firebase możesz ręcznie zainstalować emulator wraz z innymi wybranymi komponentami Local Emulator Suite. To polecenie uruchamia kreatora konfiguracji, który umożliwia wybieranie interesujących Cię emulatorów, pobieranie odpowiednich plików binarnych emulatora i ustawianie portów emulatora, jeśli domyślne ustawienia nie są odpowiednie.
firebase init emulatorsPo zainstalowaniu emulatora nie są przeprowadzane żadne kontrole aktualizacji ani nie są pobierane żadne dodatkowe automatyczne pliki do momentu zaktualizowania wersji Firebase interfejsu CLI.
Wybieranie projektu w Firebase
W procesie konfiguracji interfejs Firebase CLI wyświetli prośbę o wybranie lub utworzenie projektu w Firebase. Jeśli wybierzesz istniejący projekt skonfigurowany za pomocą SQL Connect w konsoli Firebase, zostanie zaproponowana wybrana tam konfiguracja.
Konfigurowanie emulatora
Konfigurowanie emulatora
Uruchomienie przepływu firebase init przeprowadzi Cię przez opcje konfiguracji emulatora.
Podobnie jak w przypadku innych emulatorów w Local Emulator Suite, parametry konfiguracji są przechowywane w plikach projektu lokalnego.
- Plik
firebase.jsonzawiera przypisania portów emulatora.- Klucz
emulators:uinie ma zastosowania do SQL Connect emulatora.
- Klucz
Praca z zasobami lokalnymi i produkcyjnymiSQL Connect
Jeśli chcesz mieć pewność, że nie wpłyniesz na zasoby produkcyjne, ustaw demo-
projectID lub upewnij się, że kod klienta jest skonfigurowany tak, aby łączyć się z emulatorem, jak opisano w dalszej części.
Uruchamianie emulatora
Jeśli emulator jest uruchamiany w trybie nieinteraktywnym, np. w przypadku przepływów pracy CI/CD, uruchom go za pomocą opcji exec.
firebase emulators:exec ./path/to/test-script.shJeśli integrujesz wstępnie zdefiniowane zapytania i mutacje w kodzie klienta i używasz emulatora specjalnie do testowania klientów, możesz użyć opcji start
do pracy interaktywnej. Możesz też uruchomić emulator z poziomu rozszerzenia SQL Connect VS Code.
firebase emulators:startInstrumentuj kod klienta, aby komunikował się z emulatorem
Skonfiguruj ustawienia w aplikacji lub klasy testowe, aby wchodzić w interakcje z emulatorem SQL Connect w ten sposób.
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
Używanie emulatora do testowania i trybu ciągłej integracji
Uruchamianie skonteneryzowanych obrazów Local Emulator Suite
Instalacja i konfiguracja Local Emulator Suite za pomocą kontenerów w typowym środowisku CI jest prosta.
Pamiętaj o kilku kwestiach:
- Pliki binarne emulatora są instalowane i zapisywane w pamięci podręcznej w lokalizacji
~/.cache/firebase/emulators/. Aby uniknąć wielokrotnego pobierania, możesz dodać tę ścieżkę do konfiguracji pamięci podręcznej CI. - Jeśli w repozytorium nie masz pliku
firebase.json, musisz dodać argument wiersza poleceń do poleceniaemulators:startlubemulators:exec, aby określić, które emulatory mają zostać uruchomione. Na przykład:--only dataconnect.
Czyszczenie bazy danych między testami
Aby zresetować środowiska testowe między uruchomieniami, Firebase zaleca:
- Tworzenie dedykowanych mutacji do obsługi tych działań:
- Podczas konfiguracji wypełnij instancję lokalnej bazy danych danymi początkowymi.
- W fazie zamykania usuń zmodyfikowane dane z instancji bazy danych po teście.
Różnice między emulatorem SQL Connect a wersją produkcyjną
SQL ConnectEmulator symuluje wiele funkcji produktu po stronie serwera. Istnieją jednak pewne wyjątki:
- Wersja i szczegółowa konfiguracja PGLite mogą się różnić od wersji produkcyjnej instancji Cloud SQL.
- Jeśli używasz emulatora do tworzenia aplikacji z integracją SQL Connectpgvector i interfejsu Vertex API, wywołania interfejsu Cloud Vertex API są wykonywane bezpośrednio, a nie za pomocą integracji Vertex z Cloud SQL. Wywołania interfejsu API w wersji produkcyjnej są jednak nadal wykonywane, co oznacza, że musisz używać prawdziwego projektu Firebase, nie możesz używać projektu
demo-i poniesiesz koszty interfejsu Vertex API.