@astrojs/ db
Astro DB es una base de datos SQL completamente administrada diseñada para el ecosistema de Astro: desarrolla localmente en Astro y despliega desde tu panel de Astro Studio.
Con Astro DB tienes una herramienta potente, local y segura para consultar y modelar contenido como una base de datos relacional. Visualiza, administra y despliega tus datos remotos alojados a través de tu panel interactivo de Studio.
Instalación
Sección titulada InstalaciónAstro incluye un comando astro add
para automatizar la configuración de integraciones oficiales. Si lo prefieres, puedes instalar las integraciones manualmente en su lugar.
Ejecuta uno de los siguientes comandos en una nueva ventana de terminal.
Instalación manual
Sección titulada Instalación manualSi prefieres configurar las cosas desde cero, omite astro add
y sigue estas instrucciones para instalar Astro DB tú mismo.
1. Instala la integración desde npm a través de un gestor de paquetes
Sección titulada 1. Instala la integración desde npm a través de un gestor de paquetes2. Agrega la integración a astro.config.mjs
Sección titulada 2. Agrega la integración a astro.config.mjs3. Configura tu base de datos
Sección titulada 3. Configura tu base de datosCrea un archivo db/config.ts
en la raíz de tu proyecto. Este es un archivo especial que Astro cargará y utilizará automáticamente para configurar las tablas de tu base de datos.
Configuración de la tabla de referencia
Sección titulada Configuración de la tabla de referenciacolumns
Sección titulada columnsLas columnas de la tabla se configuran utilizando el objeto columns
:
Las columnas se configuran utilizando la utilidad column
. column
admite los siguientes tipos:
column.text(...)
- guarda contenido de texto plano o enriquecidocolumn.number(...)
- almacena valores enteros y de punto flotantecolumn.boolean(...)
- almacena valores verdaderos / falsoscolumn.date(...)
- almacena objetosDate
, analizados como strings ISO para el almacenamiento de datoscolumn.json(...)
- almacena bloques JSON arbitrarios, analizados como JSON serializado para el almacenamiento de datos
Hay algunos valores de configuración compartidos en todas las columnas:
primaryKey
- Establece una columnanumber
otext
como identificador único.optional
- Astro DB usaNOT NULL
para todas las columnas de forma predeterminada. Estableceoptional
entrue
para permitir valores nulos.default
- Establece el valor predeterminado para las entradas recién insertadas. Esto acepta un valor estático o un string desql
para valores generados como marcas de tiempo.unique
- Marca una columna como única. Esto evita valores duplicados en las entradas de la tabla.references
- Hace referencia a una tabla relacionada por columna. Esto establece una restricción de clave externa, lo que significa que cada valor de columna debe tener un valor coincidente en la tabla referenciada.
indexes
Sección titulada indexesLos índices de tabla se utilizan para mejorar la velocidad de búsqueda en una columna o combinación de columnas. La propiedad indexes
acepta un arreglo de objetos de configuración especificando las columnas a indexar:
Esto generará un índice único en las columnas authorId
y published
con el nombre Comment_authorId_published_idx
.
Las siguientes opciones de configuración están disponibles para cada índice:
on
:string | string[]
- Una sola columna o un array de nombres de columnas para indexar.unique
:boolean
- Establecetrue
para forzar valores únicos en las columnas indexadas.name
:string
(opcional) - Un nombre personalizado para el índice único. Esto anulará el nombre generado por Astro basado en el nombre de la tabla y las columnas que se están indexando (por ejemplo,Comment_authorId_published_idx
). Los nombres personalizados son globales, así que asegúrate de que los nombres de índice no entren en conflicto entre tablas.
foreignKeys
Sección titulada foreignKeysforeignKeys
es una API avanzada para relacionar múltiples columnas de tabla. Si solo necesitas hacer referencia a una columna, intenta usar la propiedad references
de la columna.
Las claves foráneas se utilizan para establecer una relación entre dos tablas. La propiedad foreignKeys
acepta una matriz de objetos de configuración que pueden relacionar una o más columnas entre tablas:
Cada objeto de configuración de clave foránea acepta las siguientes propiedades:
columns
:string[]
- Un array de nombres de columnas para relacionar con la tabla referenciada.references
:() => Column[]
- Una función que devuelve un array de columnas de la tabla referenciada.
Referencia de la CLI de Astro DB
Sección titulada Referencia de la CLI de Astro DBAstro DB incluye un conjunto de comandos CLI para interactuar con tu base de datos de proyecto alojada y tu cuenta de Astro Studio.
Estos comandos se ejecutan automáticamente al usar una acción de GitHub CI, y se pueden llamar manualmente utilizando el CLI astro db
.
astro db push
Sección titulada astro db pushBanderas:
--force-reset
Reinicia todos los datos de producción si se requiere un cambio de esquema.
De forma segura envía cambios de configuración de la base de datos a la base de datos de tu proyecto. Esto comprobará cualquier riesgo de pérdida de datos y te guiará en cualquier paso de migración recomendado. Si se debe realizar un cambio de esquema que rompa, usa la bandera --force-reset
para restablecer todos los datos de producción.
astro db verify
Sección titulada astro db verifyVerifica si hay diferencias entre las configuraciones de tu base de datos local y remota. Esto se ejecuta automáticamente con astro db push
. verify
comparará tu archivo db/config.ts
local con la base de datos remota y advertirá si se detectan cambios.
astro db execute <file-path>
Sección titulada astro db execute <file-path>Banderas:
--remote
Ejecuta contra la base de datos de tu proyecto de Studio. Omite para ejecutar contra tu servidor de desarrollo.
Ejecuta un archivo .ts
o .js
para leer o escribir en tu base de datos. Esto acepta una ruta de archivo como argumento y admite el uso del módulo astro:db
para escribir consultas seguras. Utiliza la bandera --remote
para ejecutar contra la base de datos de tu proyecto de Studio, u omite la bandera para ejecutar contra tu servidor de desarrollo. Consulta cómo sembrar datos de desarrollo para ver un archivo de ejemplo.
astro db shell --query <sql-string>
Sección titulada astro db shell --query <sql-string>Banderas:
--query
Consulta SQL sin procesar para ejecutar.--remote
Ejecuta contra la base de datos de tu proyecto de Studio. Omite para ejecutar contra tu servidor de desarrollo.
Ejecuta una consulta SQL sin procesar contra tu base de datos. Utiliza la bandera --remote
para ejecutar contra la base de datos de tu proyecto de Studio u omite la bandera para ejecutar contra tu servidor de desarrollo.
Referencia de utilidad de Astro DB
Sección titulada Referencia de utilidad de Astro DBisDbError()
Sección titulada isDbError()La función isDbError()
comprueba si un error es una excepción de base de datos libSQL. Esto puede incluir un error de restricción de clave foránea al utilizar referencias, o campos que faltan al insertar datos. Puedes combinar isDbError()
con un bloque try / catch para manejar errores de base de datos de tu aplicación: