Firebase Data Connect ti offre un emulatore locale per la prototipazione end-to-end, nonché flussi di integrazione continua e deployment continuo (CI/CD):
- L'emulatore Data Connect interagisce con un'istanza di database PGLite locale integrata per consentirti di prototipare query e mutazioni e testare il codice client in un ambiente completamente locale.
- L'emulatore Data Connect può essere utilizzato anche per lavori non interattivi. Consente di eseguire test automatizzati ed è adatto all'uso con i flussi di lavoro CI/CD. Questo è utile quando gli schemi sono stabili e vuoi prototipare e testare il codice lato client.
Questa guida tratta l'installazione e l'utilizzo dell'emulatore in modo più dettagliato rispetto alla guida rapida.
Installa l'emulatore Data Connect
Prima di installare Local Emulator Suite per utilizzare l'emulatore Data Connect, devi disporre di:
- Node.js versione 18.0 o successive.
Installa l'interfaccia a riga di comando Firebase e configura la directory del progetto
Installa la CLI Firebase seguendo la guida all'installazione. Assicurati di eseguire aggiornamenti regolari, poiché l'emulatore Data Connect è in fase di sviluppo attivo con correzioni di bug e nuove funzionalità.
Se non l'hai ancora fatto, inizializza la directory di lavoro corrente come un progetto Firebase, seguendo le istruzioni per specificare i prodotti da utilizzare:
firebase init
Impostare o modificare la configurazione di Local Emulator Suite
Se hai avviato l'emulatore Data Connect dall'estensione Firebase VS Code, l'emulatore è stato installato automaticamente, se necessario.
Puoi utilizzare l'interfaccia a riga di comando Firebase per installare manualmente l'emulatore insieme ad altri componenti selezionati di Local Emulator Suite. Questo comando avvia una procedura guidata di configurazione che ti consente di selezionare gli emulatori di interesse, scaricare i file binari dell'emulatore corrispondenti e impostare le porte dell'emulatore se i valori predefiniti non sono appropriati.
firebase init emulators
Una volta installato un emulatore, non vengono eseguiti controlli degli aggiornamenti e non vengono eseguiti download automatici aggiuntivi finché non aggiorni la versione della CLI Firebase.
Scegliere un progetto Firebase
Nel flusso di configurazione, l'interfaccia a riga di comando Firebase ti chiede di scegliere o creare un progetto Firebase. Se scegli un progetto esistente che hai configurato con Data Connect nella console Firebase, ti verrà suggerita la configurazione che hai scelto in quella sede.
Configurare l'emulatore
Configurare l'emulatore
L'esecuzione del flusso firebase init
ti guiderà nelle opzioni di configurazione dell'emulatore.
Come altri emulatori in Local Emulator Suite, i parametri di configurazione
vengono memorizzati nei file di progetto locali.
- Il file
firebase.json
contiene le assegnazioni delle porte dell'emulatore.- Il tasto
emulators:ui
non si applica all'emulatore Data Connect.
- Il tasto
Utilizzare le risorse locali e di produzione Data Connect
Se vuoi assicurarti di non influire sulle risorse di produzione, imposta un demo-
projectID o assicurati che il codice client sia instrumentato per connettersi
all'emulatore, come descritto in una sezione successiva.
Avvia l'emulatore
Se esegui l'emulatore in modo non interattivo, ad esempio per i flussi di lavoro CI/CD, avvialo con l'opzione exec
.
firebase emulators:exec ./path/to/test-script.sh
Se stai integrando query e mutazioni predefinite nel codice client e utilizzi l'emulatore
specificamente per testare i client, puoi utilizzare l'opzione start
per il lavoro interattivo. Puoi anche avviare l'emulatore dall'estensione VS Code.
firebase emulators:start
Strumentare il codice client per comunicare con l'emulatore
Configura le classi di test o la configurazione in-app per interagire con l'emulatore Data Connect nel seguente modo.
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
Utilizzare l'emulatore per i test e l'integrazione continua
Esegui immagini Local Emulator Suite containerizzate
L'installazione e la configurazione di Local Emulator Suite con i container in una tipica configurazione CI sono semplici.
Ci sono alcuni problemi da notare:
- I file binari dell'emulatore sono installati e memorizzati nella cache in
~/.cache/firebase/emulators/
. Ti consigliamo di aggiungere questo percorso alla configurazione della cache CI per evitare download ripetuti. - Se non hai un file
firebase.json
nel repository, devi aggiungere un argomento della riga di comando al comandoemulators:start
oemulators:exec
per specificare quali emulatori devono essere avviati. Ad esempio,--only dataconnect
.
Svuotare il database tra i test
Per reimpostare gli ambienti di test tra una corsa e l'altra, Firebase consiglia:
- Scrittura di mutazioni dedicate per gestire quanto segue:
- Durante la configurazione, compila un'istanza di database locale con i dati iniziali.
- In teardown, elimina i dati modificati dall'istanza del database post-test.
Differenze tra l'emulatore Data Connect e la produzione
L'emulatore Data Connect simula molte funzionalità del prodotto lato server. Tuttavia, esistono alcune eccezioni di cui tenere conto:
- La versione e la configurazione dettagliata di PGLite potrebbero differire dalla versione della tua istanza Cloud SQL di produzione.
- Se utilizzi l'emulatore per sviluppare con l'integrazione di pgvector e dell'API Vertex di Data Connect, le chiamate all'API Vertex Cloud vengono effettuate direttamente, anziché tramite l'integrazione di Vertex di Cloud SQL. Tuttavia, le chiamate
all'API di produzione vengono comunque effettuate, il che significa che devi utilizzare un progetto Firebase
reale, non puoi utilizzare un progetto
demo-
e verranno sostenuti i costi dell'API Vertex.