使用 Accelerate 连接池设置 Supabase
介绍
本指南教你如何使用 Prisma Accelerate 为托管在 Supabase 上的 PostgreSQL 数据库添加连接池。
Prisma Accelerate 是一个强大且成熟的连接池,可确保您的数据库在流量高峰和高负载情况下正常运行。观看此视频,了解它在负载测试中的表现,或了解连接池的重要性。
先决条件
要成功完成本指南,您需要一个托管在 Supabase 上的 PostgreSQL 实例的连接字符串。它通常看起来像这样
postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres
如果您已经有一个使用 Prisma ORM 的项目,您可以跳过前两个步骤,直接跳到步骤 3. 安装 Accelerate 扩展。
1. 设置 Prisma ORM
首先在您的项目中安装 Prisma CLI
npm install prisma --save-dev
然后,运行以下命令初始化一个新项目
npx prisma init
这将创建一个新的 prisma 目录,其中包含一个 schema.prisma 文件,并添加一个带有 DATABASE_URL 环境变量的 .env 文件。
更新文件并将 DATABASE_URL 设置为您的 Supabase 连接字符串
DATABASE_URL="postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres"
创建一个 prisma.config.ts 文件来配置 Prisma
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config';
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DATABASE_URL'),
},
});
您需要安装 dotenv 包才能加载环境变量
npm install dotenv
2. 反思您的数据库
接下来,运行以下命令反思您的数据库并创建您的数据模型
npx prisma db pull
此命令读取您的数据库 Schema 并在您的 schema.prisma 文件中创建与数据库中的表匹配的新模型。
如果您将来想使用 Prisma Migrate,您还需要对数据库进行基线化。
3. 安装 Accelerate 扩展
安装 Prisma Client 的 Accelerate 扩展
npm install @prisma/extension-accelerate
这对于访问 Prisma Accelerate 的连接池是必需的。
4. 在 Prisma Console 中设置 Accelerate
要在 Prisma Console 中设置 Accelerate,请按照以下步骤操作
- 登录.
- 选择新项目
- 为您的项目选择一个名称
- 在选择您的起始产品部分,找到Accelerate卡片并点击开始使用
- 在数据库连接字符串字段中,粘贴您的 Supabase 连接字符串
- 选择离您的数据库最近的区域
- 点击创建项目
- 在下一个屏幕上,点击启用 Accelerate
完成这些步骤后,您将被重定向到另一个页面,您需要在该页面上点击生成 API 密钥按钮。
然后,您将看到一个新的连接 URL,它使您能够连接到 Prisma Accelerate 的连接池。这需要设置为您的 .env 文件中的新 DATABASE_URL
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."
如果您想将 Prisma Migrate 与 Prisma Accelerate 一起使用,您需要在 prisma.config.ts 文件中提供一个直接的数据库 URL。Accelerate URL(以 prisma:// 开头)用于通过 PrismaClient 进行查询,而直接的数据库 URL 用于迁移。
更新您的 prisma.config.ts
import 'dotenv/config'
import { defineConfig, env } from 'prisma/config';
export default defineConfig({
schema: 'prisma/schema.prisma',
migrations: {
path: 'prisma/migrations',
},
datasource: {
url: env('DIRECT_URL'), // Direct database URL for migrations
},
});
并将 DIRECT_URL 添加到您的 .env 文件中
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."
DIRECT_URL="postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres"
5. 生成 Prisma Client
部署好 Prisma Schema 后,您可以继续生成 Prisma Client
npx prisma generate
在 Prisma 7 中,使用 Prisma Accelerate 时不再需要 --no-engine 标志。以前,您会运行 prisma generate --no-engine,但现在标准的 prisma generate 命令适用于所有用例。
6. 通过连接池发送查询
在您的应用程序代码中,您现在需要将 Accelerate 扩展应用于您的 Prisma Client 实例
import { PrismaClient } from "./generated/prisma/client"
import { withAccelerate } from "@prisma/extension-accelerate"
const prisma = new PrismaClient({
accelerateUrl: process.env.DATABASE_URL,
}).$extends(withAccelerate())
此时,您现在可以开始发送查询,这些查询将通过连接池路由到您的数据库。
与 Prisma 保持联系
通过以下方式与我们保持联系,继续你的 Prisma 之旅: 我们的活跃社区。保持信息灵通,参与其中,并与其他开发人员协作。
- 在 X 上关注我们 获取公告、直播活动和实用技巧。
- 加入我们的 Discord 提问、与社区交流,并通过对话获得积极支持。
- 在 YouTube 上订阅 获取教程、演示和直播。
- 在 GitHub 上参与 加星收藏存储库、报告问题或为问题做出贡献。