コンテンツにスキップ

XataとAstro

Xataは、リレーショナルデータベース、検索エンジン、分析エンジンの機能を組み合わせたサーバーレスデータプラットフォームで、一貫したREST APIを公開します。

  • Xataのアカウントとデータベースの作成(Web UIからサンプルデータベースを使用できます)
  • アクセストークン (XATA_API_KEY)
  • データベースのURL

Xata CLIを更新・初期化すると、.env にAPIキーが追記され、データベースURLも設定されます。

設定ファイルは以下のようになります。

.env
XATA_API_KEY=hash_key
# Gitブランチと同名のXataブランチが
# 存在しない場合に使用されるブランチ
XATA_BRANCH=main

databaseUrl.xatarcファイルで定義します。

.xatarc
{
"databaseUrl": "https://your-database-url"
}

環境変数に型安全性とIntelliSenseを持たせるため、src/env.d.tsを作成または編集します。

src/env.d.ts
interface ImportMetaEnv {
readonly XATA_API_KEY: string;
readonly XATA_BRANCH?: string;
}
interface ImportMeta {
readonly env: ImportMetaEnv;
}

Xata CLIのコード生成でTypeScriptを選択すると、データベーススキーマに合わせた型付きSDK (@xata.io/client) が生成・インストールされます。

環境変数とデータベースURLはSDKが自動取得するため、追加設定は不要です。

ここまでのプロジェクト構成です。

  • ディレクトリsrc/
    • xata.ts
    • env.d.ts
  • .env
  • astro.config.mjs
  • package.json
  • .xatarc

投稿(Posts)を取得する例です。.astroファイルにXataClientをインポートし、最初の50件を取得します。

src/pages/blog/index.astro
---
import { XataClient } from '../../xata';
const xata = new XataClient({
apiKey: import.meta.env.XATA_API_KEY,
branch: import.meta.env.XATA_BRANCH
});
const { records } = await xata.db.Posts.getPaginated({
pagination: {
size: 50
}
})
---
<ul>
{records.map((post) => (
<li>{post.title}</li>
))}
</ul>

スキーマを変更した場合は 必ずXata CLIでSDKを再生成してください。生成ファイルを直接編集すると、再生成時に上書きされます。

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

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