Turso и Astro
Turso — это распределенная база данных, построенная на libSQL, форке SQLite. Она оптимизирована для низкой задержки запросов, что делает ее подходящей для глобальных приложений.
Инициализация Turso в Astro
Заголовок раздела Инициализация Turso в AstroПредварительные условия
Заголовок раздела Предварительные условия- Установленный и авторизированный Turso CLI
- База данных Turso со схемой
- URL вашей базы данных
- Токен доступа
Настройте переменные окружения
Заголовок раздела Настройте переменные окруженияПолучите URL вашей базы данных с помощью следующей команды:
turso db show <database-name> --url
Создайте токен аутентификации для базы данных:
turso db tokens create <database-name>
Добавьте результаты выполнения обеих команд в файл .env
в корне проекта. Если этот файл не существует, создайте его.
TURSO_DATABASE_URL=libsql://...TURSO_AUTH_TOKEN=
Не используйте префикс PUBLIC_
при создании этих приватных переменных окружения. Это приведет к раскрытию этих значений на клиенте.
Установка клиента LibSQL
Заголовок раздела Установка клиента LibSQLУстановите @libsql/client
для подключения Turso к Astro:
npm install @libsql/client
pnpm add @libsql/client
yarn add @libsql/client
Инициализация нового клиента
Заголовок раздела Инициализация нового клиентаСоздайте файл turso.ts
в папке src
и вызовите createClient
, передав ему TURSO_DATABASE_URL
и 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,});
Запрос к вашей базе данных
Заголовок раздела Запрос к вашей базе данныхЧтобы получить доступ к информации из вашей базы данных, импортируйте turso
и выполните SQL-запрос внутри любого компонента .astro
.
Следующий пример извлекает все posts
из вашей таблицы, а затем выводит список заголовков в компоненте <BlogIndex />
:
---import { turso } from '../turso'
const { rows } = await turso.execute('SELECT * FROM posts')---
<ul> {rows.map((post) => ( <li>{post.title}</li> ))}</ul>
SQL Заполнители
Заголовок раздела SQL ЗаполнителиМетод execute()
может принимать объект для передачи переменных в SQL-запрос, например, slug
или пагинацию.
Следующий пример извлекает одну запись из таблицы posts
, где slug
- это значение, полученное из Astro.params
, а затем отображает заголовок сообщения.
---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>
Ресурсы Turso
Заголовок раздела Ресурсы Turso- Turso Docs
- Turso on GitHub
- Использование Turso для обслуживания содержимого блога Astro с рендерингом на стороне сервера