跳转到内容

Neon Postgres 与 Astro

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

将 Neon 添加至你的 Astro 项目

段落标题 将 Neon 添加至你的 Astro 项目
  • 一个已创建项目的 Neon 账号
  • Neon 数据库连接字符串(connection-string)
  • 一个启用 按需渲染 (SSR) (EN) 的 Astro 项目

要将 Neon 与 Astro 一起使用,你需要设置 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 数据库

段落标题 查询你的 Neon 数据库

你现在可以使用 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>当前时间</h1>
<p>时间为:{currentTime}</p>

使用 Neon 进行数据库分支

段落标题 使用 Neon 进行数据库分支

Neon 的分支功能允许你创建数据库的副本以进行开发或测试。通过为每个分支创建不同的环境变量,在 Astro 项目中使用它:

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

More backend service guides

Contribute

What’s on your mind?

Create GitHub Issue

Quickest way to alert our team of a problem.

Community