Firebase SQL Connect fornisce un emulatore locale per la prototipazione end-to-end, nonché flussi di integrazione continua e deployment continuo (CI/CD):
- L'emulatore SQL Connect interagisce con un'istanza di database PGLite integrata locale per consentirti di prototipare query e mutazioni e testare il codice client in un ambiente completamente locale.
- L'SQL Connect emulatore può essere utilizzato anche per il lavoro non interattivo. Consente di eseguire test automatici 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 illustra l'installazione e l'utilizzo dell'emulatore in modo più dettagliato rispetto alla guida rapida.
Installare l'emulatore SQL Connect
Prima di installare Local Emulator Suite per utilizzare l'emulatore SQL Connect, devi avere:
- Node.js versione 18.0 o successive.
Installare Firebase CLI e configurare la directory del progetto
Installa Firebase CLI, seguendo la guida all'installazione. Assicurati di eseguire aggiornamenti regolari, poiché l' SQL Connect emulatore è 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 progetto Firebase, seguendo le istruzioni per specificare i prodotti da utilizzare:
firebase init
Impostare o modificare la configurazione Local Emulator Suite
Se hai avviato l'emulatore SQL Connect dall'estensione SQL Connect VS Code, l'emulatore è stato installato, se necessario.
Puoi utilizzare la CLI 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 emulatorsUna volta installato un emulatore, non vengono eseguiti controlli degli aggiornamenti e non vengono eseguiti download automatici aggiuntivi finché non aggiorni la versione di Firebase CLI.
Scegliere un progetto Firebase
Nel flusso di configurazione, la Firebase CLI ti chiede di scegliere o creare un progetto Firebase. Se scegli un progetto esistente che hai configurato con SQL Connect nella console Firebase, ti verrà suggerita la configurazione scelta.
Configurare l'emulatore
Configurare l'emulatore
L'esecuzione del flusso firebase init ti guiderà attraverso le opzioni di configurazione dell'emulatore.
Come altri emulatori in Local Emulator Suite, i parametri di configurazione
vengono archiviati nei file di progetto locali.
- Il file
firebase.jsoncontiene le assegnazioni delle porte dell'emulatore.- La chiave
emulators:uinon si applica all'emulatore SQL Connect.
- La chiave
Utilizzare le risorse SQL Connect locali e di produzione
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.
Avviare 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.shSe stai integrando query e mutazioni predefinite nel codice client e utilizzi l'emulatore in modo specifico per testare i client, puoi utilizzare l'opzione start per il lavoro interattivo. Puoi anche avviare l'emulatore dall'estensione SQL Connect VS Code.
firebase emulators:startInstrumentare il codice client per comunicare con l'emulatore
Configura le classi di test o di configurazione in-app per interagire con l'emulatore SQL Connect come segue.
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
Eseguire immagini containerizzate Local Emulator Suite
L'installazione e la configurazione di Local Emulator Suite con i container in una configurazione CI tipica sono semplici.
Ci sono alcuni problemi da notare:
- I file binari dell'emulatore vengono installati e memorizzati nella cache in
~/.cache/firebase/emulators/. Potresti voler aggiungere questo percorso alla configurazione della cache CI per evitare download ripetuti. - Se non hai un file
firebase.jsonnel repository, devi aggiungere un argomento della riga di comando al comandoemulators:startoemulators:execper specificare gli emulatori da avviare. Ad esempio,--only dataconnect.
Cancellare il database tra i test
Per reimpostare gli ambienti di test tra le esecuzioni, Firebase consiglia di:
- Scrivere mutazioni dedicate per gestire quanto segue:
- Durante la configurazione, popola un'istanza di database locale con i dati iniziali.
- Durante la pulizia, elimina i dati modificati dall'istanza di database post-test.
Differenze tra l'emulatore SQL Connect e la produzione
L'emulatore SQL Connect simula molte funzionalità del prodotto lato server. Tuttavia, ci sono alcune eccezioni di cui devi essere a conoscenza:
- La versione e la configurazione dettagliata di PGLite potrebbero essere diverse dalla versione dell'istanza Cloud SQL di produzione.
- Se utilizzi l'emulatore per sviluppare con l'integrazione di pgvector e Vertex API di SQL Connect, le chiamate all'API Cloud Vertex 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 addebitati i costi dell'API Vertex.