跳转到内容

Neon Postgres & Astro

Neon 是一个完全托管的无服务器 Postgres 数据库。它将存储和计算分离,以提供自动扩缩容、分支和无限存储。

  • 一个已创建项目的 Neon 帐户
  • Neon 数据库连接字符串
  • 一个启用了按需渲染 (SSR) 的 Astro 项目

要在 Astro 中使用 Neon,你需要设置一个 Neon 环境变量。在你的项目根目录中创建或编辑 .env 文件,并添加以下代码,替换为你自己的项目详细信息

.env
NEON_DATABASE_URL="postgresql://<user>:<password>@<endpoint_hostname>.neon.tech:<port>/<dbname>?sslmode=require"

为了获得更好的 TypeScript 支持,请在 src/env.d.ts 文件中定义环境变量

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

创建一个新文件 src/lib/neon.ts,并使用以下代码来初始化你的 Neon 客户端

src/lib/neon.ts
import { neon } from '@neondatabase/serverless';
export const sql = neon(import.meta.env.NEON_DATABASE_URL);

现在你可以使用 Neon 客户端从任何 .astro 组件中查询你的数据库。以下示例从 Postgres 数据库中获取当前时间

src/pages/index.astro
---
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 的分支功能允许你为开发或测试创建数据库的副本。通过为每个分支创建不同的环境变量,可以在你的 Astro 项目中使用此功能

.env.development
NEON_DATABASE_URL=your_development_branch_url
.env.production
NEON_DATABASE_URL=your_production_branch_url

更多后端服务指南

贡献 社区 赞助