Neon Postgres & Astro
Neon は、フルマネージドなサーバーレスPostgresデータベースです。ストレージとコンピューティングを分離し、オートスケーリング、ブランチング、ボトムレスストレージを提供します。
AstroプロジェクトにNeonを追加する
Section titled “AstroプロジェクトにNeonを追加する”- プロジェクトが作成された Neon アカウント
- Neonデータベース接続文字列
- オンデマンドレンダリング (SSR) が有効なAstroプロジェクト
AstroでNeonを使用するには、Neon環境変数を設定する必要があります。プロジェクトルートで .env
ファイルを作成または編集し、次のコードを追加して、独自のプロジェクトの詳細に置き換えます。
NEON_DATABASE_URL="postgresql://<user>:<password>@<endpoint_hostname>.neon.tech:<port>/<dbname>?sslmode=require"
より良いTypeScriptサポートのために、src/env.d.ts
ファイルで環境変数を定義します。
interface ImportMetaEnv { readonly NEON_DATABASE_URL: string;}
interface ImportMeta { readonly env: ImportMetaEnv;}
Astroの環境変数と
.env
ファイルの詳細をご覧ください。
依存関係のインストール
Section titled “依存関係のインストール”Neonに接続するために @neondatabase/serverless
パッケージをインストールします。
npm install @neondatabase/serverless
Neonクライアントの作成
Section titled “Neonクライアントの作成”新しいファイル src/lib/neon.ts
を作成し、次のコードでNeonクライアントを初期化します。
import { neon } from '@neondatabase/serverless';
export const sql = neon(import.meta.env.NEON_DATABASE_URL);
Neon データベースへのクエリ
Section titled “Neon データベースへのクエリ”これで、任意の .astro
コンポーネントからNeonクライアントを使用してデータベースにクエリを実行できます。次の例では、Postgresデータベースから現在時刻を取得します。
---import { sql } from '../lib/neon';
const response = await sql`SELECT NOW() as current_time`;const currentTime = response[0].current_time;---
<h1>現在時刻</h1><p>時刻は: {currentTime}</p>
Neon によるデータベースブランチング
Section titled “Neon によるデータベースブランチング”Neonのブランチング機能を使用すると、開発やテスト用にデータベースのコピーを作成できます。Astroプロジェクトでこれを使用するには、各ブランチに異なる環境変数を作成します。
NEON_DATABASE_URL=your_development_branch_url
NEON_DATABASE_URL=your_production_branch_url