コンテンツにスキップ

Turso & Astro

Turso は、SQLiteのフォークであるlibSQLを基盤とした分散データベースです。低クエリレイテンシーに最適化されており、グローバルアプリケーションに適しています。

  • Turso CLI がインストールされ、サインインされていること
  • スキーマを持つ Turso データベース
  • データベースURL
  • アクセストークン

次のコマンドを使用してデータベースURLを取得します。

ターミナルウィンドウ
turso db show <database-name> --url

データベースの認証トークンを作成します。

ターミナルウィンドウ
turso db tokens create <database-name>

上記の両方のコマンドからの出力を、プロジェクトのルートにある .env ファイルに追加します。このファイルが存在しない場合は、作成してください。

.env
TURSO_DATABASE_URL=libsql://...
TURSO_AUTH_TOKEN=

LibSQLクライアントのインストール

Section titled “LibSQLクライアントのインストール”

TursoをAstroに接続するために @libsql/client をインストールします。

ターミナルウィンドウ
npm install @libsql/client

src フォルダに turso.ts ファイルを作成し、TURSO_DATABASE_URLTURSO_AUTH_TOKEN を渡して createClient を呼び出します。

src/turso.ts
import { createClient } from "@libsql/client/web";
export const turso = createClient({
url: import.meta.env.TURSO_DATABASE_URL,
authToken: import.meta.env.TURSO_AUTH_TOKEN,
});

データベースから情報にアクセスするには、任意の .astro コンポーネント内で turso をインポートし、SQL クエリを実行します。

次の例では、テーブルからすべての posts を取得し、<BlogIndex /> コンポーネントでタイトルのリストを表示します。

src/components/BlogIndex.astro
---
import { turso } from '../turso'
const { rows } = await turso.execute('SELECT * FROM posts')
---
<ul>
{rows.map((post) => (
<li>{post.title}</li>
))}
</ul>

execute() メソッドは、slug やページネーションなど、SQL文に変数を渡すオブジェクトを受け取ることができます。

次の例では、slugAstro.params から取得した値と一致する posts テーブルから単一のエントリを取得し、投稿のタイトルを表示します。

src/pages/index.astro
---
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>

その他のバックエンドサービスガイド

貢献する コミュニティ スポンサー