Turso y Astro
Turso es una base de datos distribuida construida sobre libSQL, una bifurcación de SQLite. Está optimizada para baja latencia de consultas, lo que la hace adecuada para aplicaciones globales.
Inicializando Turso en Astro
Sección titulada Inicializando Turso en AstroPrerrequesitos
Sección titulada Prerrequesitos- La CLI de Turso instalada y iniciada sesión
- Una base de datos Turso con un esquema
- URL de tu base de datos
- Un Token de Aceso
Configura tus variables de entorno
Sección titulada Configura tus variables de entornoObtén la URL de tu base de datos utilizando el siguiente comando:
turso db show <nombre-de-la-base-de-datos> --urlCrea un token de autenticación para la base de datos:
turso db tokens create <nombre-de-la-base-de-datos>Agrega la salida de ambos comandos a tu archivo .env en la raíz de tu proyecto. Si este archivo no existe, crea uno.
TURSO_DATABASE_URL=libsql://...TURSO_AUTH_TOKEN=No utilizes el prefijo PUBLIC_ cuando estés creando estas variables de entorno privadas. Esto expondrá estos valores en el cliente.
Instala LibSQL Client
Sección titulada Instala LibSQL ClientInstala @libsql/client para conectar Turso a Astro:
npm install @libsql/clientpnpm add @libsql/clientyarn add @libsql/clientInicializa un nuevo cliente
Sección titulada Inicializa un nuevo clienteCrea un archivo turso.ts en la carpeta src e invoca createClient, pasándole TURSO_DATABASE_URL y TURSO_AUTH_TOKEN:
import { createClient } from "@libsql/client/web";
export const turso = createClient({ url: import.meta.env.TURSO_DATABASE_URL, authToken: import.meta.env.TURSO_AUTH_TOKEN,});Consultando tu base de datos
Sección titulada Consultando tu base de datosPara acceder a la información de tu base de datos, importa turso y ejecuta una consulta SQL dentro de cualquier componente .astro.
El siguiente ejemplo obtiene todos los posts de tu tabla y muestra una lista de títulos en un componente <BlogIndex />:
---import { turso } from '../turso'
const { rows } = await turso.execute('SELECT * FROM posts')---
<ul> {rows.map((post) => ( <li>{post.title}</li> ))}</ul>Placeholders SQL
Sección titulada Placeholders SQLEl método execute() puede tomar un objeto para pasar variables a la sentencia SQL, como slug o paginación.
El siguiente ejemplo obtiene una única entrada de la tabla posts WHERE el slug es el valor obtenido de Astro.params, luego muestra el título de la publicación.
---import { turso } from '../turso'
const { slug } = Astro.params
const { rows } = await turso.execute({ sql: 'SELECT * FROM posts WHERE slug = ?', args: [slug!]})---
<h1>{rows[0].title}</h1>Recursos de Turso
Sección titulada Recursos de Turso- Docs Turso
- Turso en GitHub
- Usando Turso para servir el contenido de un blog de Astro renderizado en el servidor