Firebase SQL Connect bietet einen lokalen Emulator für End-to-End Prototyping sowie für Continuous Integration und Continuous Deployment (CI/CD):
- Der SQL Connect Emulator interagiert mit einer lokalen integrierten PGLite-Datenbankinstanz, mit der Sie Abfragen und Mutationen prototypisieren und Clientcode in einer vollständig lokalen Umgebung testen können.
- Der SQL Connect Emulator kann auch für nicht interaktive Aufgaben verwendet werden. Sie können damit automatisierte Tests ausführen und er eignet sich für die Verwendung mit CI/CD-Workflows. Das ist nützlich, wenn Ihre Schemas stabil sind und Sie clientseitigen Code prototypisieren und testen möchten.
In diesem Leitfaden werden die Installation und Verwendung des Emulators ausführlicher als in der Kurzanleitung beschrieben.
SQL Connect-Emulator installieren
Bevor Sie die Local Emulator Suite installieren, um den SQL Connect Emulator zu verwenden, benötigen Sie Folgendes:
- Node.js-Version 18.0 oder höher.
Firebase CLI installieren und Projektverzeichnis einrichten
Installieren Sie die Firebase CLI, gemäß der Installationsanleitung. Aktualisieren Sie sie regelmäßig, da der SQL Connect Emulator aktiv weiterentwickelt wird und Fehler behoben und neue Funktionen hinzugefügt werden.
Initialisieren Sie das aktuelle Arbeitsverzeichnis als Firebase-Projekt, falls noch nicht geschehen. Folgen Sie der Anleitung, um anzugeben, welche Produkte verwendet werden sollen:
firebase init
Konfiguration von Local Emulator Suite festlegen oder ändern
Wenn Sie den SQL Connect Emulator über die VS Code-Erweiterung für SQL Connect gestartet haben, wurde der Emulator bei Bedarf für Sie installiert.
Sie können den Firebase CLI verwenden, um den Emulator manuell zusammen mit anderen ausgewählten Komponenten der Local Emulator Suite zu installieren. Mit diesem Befehl wird ein Konfigurationsassistent gestartet, mit dem Sie Emulatoren auswählen, die entsprechenden binären Emulator-Dateien herunterladen und Emulatorports festlegen können, wenn die Standardwerte nicht geeignet sind.
firebase init emulatorsNach der Installation eines Emulators werden keine Aktualisierungsprüfungen durchgeführt und keine zusätzlichen automatischen Downloads ausgeführt, bis Sie Ihre Firebase CLI-Version aktualisieren.
Firebase-Projekt auswählen
Im Einrichtungsablauf werden Sie von der Firebase CLI aufgefordert, ein Firebase-Projekt auszuwählen oder zu erstellen. Wenn Sie ein vorhandenes Projekt auswählen, das Sie in der Firebase Konsole mit SQL Connect eingerichtet haben, wird die dort ausgewählte Konfiguration vorgeschlagen.
Emulator einrichten
Emulator konfigurieren
Wenn Sie den Ablauf firebase init ausführen, werden Sie durch die Optionen für die Einrichtung des Emulators geführt.
Wie bei anderen Emulatoren in der Local Emulator Suite, werden Konfigurationsparameter
in lokalen Projektdateien gespeichert.
- Ihre
firebase.json-Datei enthält Zuweisungen für Emulatorports.- Der Schlüssel
emulators:uigilt nicht für den SQL Connect Emulator.
- Der Schlüssel
Mit lokalen und Produktionsressourcen SQL Connect arbeiten
Wenn Sie sichergehen möchten, dass Produktionsressourcen nicht beeinträchtigt werden, legen Sie eine demo- Projekt-ID fest oder sorgen Sie dafür, dass Ihr Clientcode so instrumentiert ist, dass er eine Verbindung zum Emulator herstellt, wie in einem späteren Abschnitt beschrieben.
Emulator starten
Wenn Sie den Emulator nicht interaktiv ausführen, z. B. für CI/CD-Workflows, starten Sie ihn mit der Option exec.
firebase emulators:exec ./path/to/test-script.shWenn Sie vordefinierte Abfragen und Mutationen in Clientcode einbinden und den Emulator speziell zum Testen von Clients verwenden, können Sie die Option start für die interaktive Arbeit verwenden. Sie können den Emulator auch über die VS Code-Erweiterung für SQL Connect starten.
firebase emulators:startClientcode für die Kommunikation mit dem Emulator instrumentieren
Richten Sie Ihre In-App-Konfiguration oder Testklassen so ein, dass sie mit dem SQL Connect Emulator interagieren.
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
Emulator für Tests und Continuous Integration verwenden
Containerisierte Local Emulator Suite Images ausführen
Die Installation und Konfiguration der Local Emulator Suite mit Containern in einer typischen CI-Einrichtung ist unkompliziert.
Es gibt jedoch einige Punkte zu beachten:
- Binärdateien des Emulators werden unter
~/.cache/firebase/emulators/installiert und im Cache gespeichert. Sie können diesen Pfad Ihrer CI-Cachekonfiguration hinzufügen, um wiederholte Downloads zu vermeiden. - Wenn sich in Ihrem Repository keine
firebase.json-Datei befindet, müssen Sie dem Befehlemulators:startoderemulators:execein Befehlszeilenargument hinzufügen, um anzugeben, welche Emulatoren gestartet werden sollen. Beispiel:--only dataconnect.
Datenbank zwischen Tests leeren
Um Ihre Testumgebungen zwischen Ausführungen zurückzusetzen, empfiehlt Firebase Folgendes:
- Erstellen Sie spezielle Mutationen für Folgendes:
- Füllen Sie beim Einrichten eine lokale Datenbankinstanz mit Startdaten.
- Löschen Sie beim Beenden geänderte Daten aus der Datenbankinstanz nach dem Test.
Unterschiede zwischen dem SQL Connect Emulator und der Produktion
Der SQL Connect Emulator simuliert viele Funktionen des serverseitigen Produkts. Es gibt jedoch einige Ausnahmen, die Sie beachten sollten:
- Die Version und die detaillierte Konfiguration von PGLite können sich von der Version Ihrer Cloud SQL-Produktionsinstanz unterscheiden.
- Wenn Sie den Emulator verwenden, um mit SQL Connect's
pgvector- und Vertex API-Integration zu entwickeln, werden Aufrufe an die Cloud Vertex API
direkt und nicht über die Vertex-Integration von Cloud SQL ausgeführt. Es werden jedoch weiterhin Aufrufe an die Produktions-API ausgeführt. Das bedeutet, dass Sie ein echtes Firebase-Projekt verwenden müssen, kein
demo--Projekt verwenden können und Kosten für die Vertex API anfallen.