跳至主要内容

使用 Accelerate 连接池设置 Supabase

15 分钟

介绍

本指南教你如何使用 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 连接字符串

.env
DATABASE_URL="postgresql://postgres:[YOUR-PASSWORD]@db.nzpppscrldfwlzfalbrf.supabase.co:5432/postgres"

创建一个 prisma.config.ts 文件来配置 Prisma

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('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,请按照以下步骤操作

  1. 登录.
  2. 选择新项目
  3. 为您的项目选择一个名称
  4. 选择您的起始产品部分,找到Accelerate卡片并点击开始使用
  5. 数据库连接字符串字段中,粘贴您的 Supabase 连接字符串
  6. 选择离您的数据库最近的区域
  7. 点击创建项目
  8. 在下一个屏幕上,点击启用 Accelerate

完成这些步骤后,您将被重定向到另一个页面,您需要在该页面上点击生成 API 密钥按钮。

然后,您将看到一个新的连接 URL,它使您能够连接到 Prisma Accelerate 的连接池。这需要设置为您的 .env 文件中的新 DATABASE_URL

.env
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

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 文件中

.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 之旅: 我们的活跃社区。保持信息灵通,参与其中,并与其他开发人员协作。

我们真诚地感谢你的参与,并期待你成为我们社区的一部分!

© . This site is unofficial and not affiliated with Prisma Data, Inc.