Neon Postgres & Astro
Neon 是一个完全托管的无服务器 Postgres 数据库。它将存储和计算分离,以提供自动扩缩容、分支和无限存储。
将 Neon 添加到你的 Astro 项目
标题为“将 Neon 添加到你的 Astro 项目”的部分先决条件
标题为“先决条件”的部分- 一个已创建项目的 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
文件的信息。
安装依赖
标题为“安装依赖”的部分安装 @neondatabase/serverless
包以连接到 Neon
npm install @neondatabase/serverless
创建 Neon 客户端
标题为“创建 Neon 客户端”的部分创建一个新文件 src/lib/neon.ts
,并使用以下代码来初始化你的 Neon 客户端
import { neon } from '@neondatabase/serverless';
export const sql = neon(import.meta.env.NEON_DATABASE_URL);
查询你的 Neon 数据库
标题为“查询你的 Neon 数据库”的部分现在你可以使用 Neon 客户端从任何 .astro
组件中查询你的数据库。以下示例从 Postgres 数据库中获取当前时间
---import { sql } from '../lib/neon';
const response = await sql`SELECT NOW() as current_time`;const currentTime = response[0].current_time;---
<h1>Current Time</h1><p>The time is: {currentTime}</p>
使用 Neon 进行数据库分支
标题为“使用 Neon 进行数据库分支”的部分Neon 的分支功能允许你为开发或测试创建数据库的副本。通过为每个分支创建不同的环境变量,可以在你的 Astro 项目中使用此功能
NEON_DATABASE_URL=your_development_branch_url
NEON_DATABASE_URL=your_production_branch_url