Firebase SQL Connect te proporciona un emulador local para la creación de prototipos de extremo a extremo , así como flujos de integración continua y de implementación continua (CI/CD):
- El emulador de SQL Connect interactúa con una instancia de base de datos PGLite integrada local para permitirte crear prototipos de consultas y mutaciones, y probar el código del cliente en un entorno completamente local.
- El emulador de SQL Connect también se puede usar para trabajos no interactivos. Te permite ejecutar pruebas automatizadas y es adecuado para usar con flujos de trabajo de CI/CD. Esto es útil cuando tus esquemas son estables y deseas crear prototipos y probar el código del cliente.
En esta guía, se abordan la instalación y el uso del emulador con más detalle que en la guía de inicio rápido.
Instala el emulador SQL Connect
Antes de instalar el Local Emulator Suite para usar el emulador SQL Connect, necesitarás lo siguiente:
- Node.js 18.0 o una versión posterior
Instala el Firebase CLI y configura el directorio del proyecto
Instala Firebase CLI, siguiendo la guía de instalación. Asegúrate de realizar actualizaciones periódicas, ya que el SQL Connect emulador está en desarrollo activo con correcciones de errores y funciones nuevas.
Si aún no lo has hecho, inicializa el directorio de trabajo actual como un proyecto de Firebase y sigue las indicaciones para especificar los productos que usarás:
firebase init
Establece o modifica la Local Emulator Suite configuración
Si iniciaste el emulador SQL Connect desde la extensión de SQL Connect para VS Code, el emulador se instaló por ti, si es necesario.
Puedes usar la CLI Firebase para instalar manualmente el emulador junto con otros componentes seleccionados de la Local Emulator Suite. Este comando inicia un asistente de configuración que te permite seleccionar emuladores de interés, descargar los archivos binarios correspondientes del emulador y establecer puertos para el emulador si los valores predeterminados no son adecuados.
firebase init emulatorsUna vez que se instala un emulador, no se realizan verificaciones de actualización ni se producen descargas automáticas adicionales hasta que actualices tu versión de Firebase CLI.
Elige un proyecto de Firebase
En el flujo de configuración, Firebase CLI te solicita que elijas o crees un proyecto de Firebase. Si eliges un proyecto existente que configuraste con SQL Connect en la Firebase console, se sugerirá la configuración que elegiste allí.
Configura el emulador
Configura el emulador
La ejecución del flujo firebase init te guiará por las opciones de configuración del emulador.
Al igual que otros emuladores en el Local Emulator Suite, los parámetros de configuración
se almacenan en archivos de proyecto locales.
- Tu archivo
firebase.jsoncontiene asignaciones de puertos del emulador.- La clave
emulators:uino se aplica al emulador SQL Connect.
- La clave
Trabaja con recursos locales y de producción SQL Connect
Si deseas asegurarte de no afectar los recursos de producción, establece un projectID demo- o asegúrate de que el código del cliente esté instrumentado para conectarse al emulador, como se explica en una sección posterior.
Inicia el emulador
Si ejecutas el emulador de forma no interactiva, por ejemplo, para flujos de trabajo de CI/CD, inicia el emulador con la opción exec.
firebase emulators:exec ./path/to/test-script.shSi integras consultas y mutaciones predefinidas en el código del cliente y usas el emulador específicamente para probar clientes, puedes usar la opción start para el trabajo interactivo. También puedes iniciar el emulador desde la extensión de SQL Connect para VS Code.
firebase emulators:startInstrumenta el código del cliente para que se comunique con el emulador
Configura la app o las clases de prueba para que interactúen con el SQL Connect emulador de la siguiente manera.
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
Usa el emulador para pruebas y la integración continua
Ejecuta imágenes alojadas en contenedores Local Emulator Suite
La instalación y configuración de la Local Emulator Suite con contenedores en un entorno típico de CI es sencilla.
Estos son algunos problemas que debes tener en cuenta:
- Los archivos binarios del emulador se instalan y almacenan en caché en
~/.cache/firebase/emulators/. Recomendamos agregar esta ruta de acceso a la configuración de caché de la CI para evitar que se repitan las descargas. - Si no tienes un archivo
firebase.jsonen tu repositorio, debes agregar un argumento de línea de comandos a los comandosemulators:startoemulators:execpara especificar los emuladores que se deben iniciar. Por ejemplo,--only dataconnect.
Borra la base de datos entre pruebas
Para restablecer tus entornos de prueba entre ejecuciones, Firebase recomienda lo siguiente:
- Escribir mutaciones dedicadas para controlar lo siguiente:
- En la configuración, propaga una instancia de base de datos local con datos iniciales.
- En la limpieza, borra los datos modificados de la instancia de base de datos posterior a la prueba.
Diferencias entre el emulador de SQL Connect y el entorno de producción
El emulador de SQL Connect simula muchas funciones del producto del servidor. Sin embargo, hay algunas excepciones que debes tener en cuenta:
- La versión y la configuración detallada de PGLite pueden diferir de la versión de tu instancia de Cloud SQL de producción.
- Si usas el emulador para desarrollar con la integración de pgvector y la API de Vertex de SQL Connect, las llamadas a la API de Cloud Vertex se realizan directamente, en lugar de a través de la integración de Vertex de Cloud SQL. Sin embargo, las llamadas a la API de producción aún se realizan, lo que significa que debes usar un proyecto de Firebase real, no puedes usar un proyecto
demo-y se generarán costos de la API de Vertex.