跳到主要内容

使用 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"

2. 内省你的数据库

接下来,运行以下命令内省你的数据库并创建你的数据模型

npx prisma db pull

此命令会读取你的数据库模式并在 schema.prisma 文件中创建与数据库中表匹配的新模型。

注意

如果你将来想使用 Prisma Migrate,你还需要为你的数据库设置基线

3. 安装 Accelerate 扩展

安装 Prisma Client 的 Accelerate 扩展

npm install @prisma/extension-accelerate

这是访问 Prisma Accelerate 连接池所必需的。

4. 在 Prisma 控制台设置 Accelerate

要在 Prisma 控制台中设置 Accelerate,请按照以下步骤操作

  1. 登录到.
  2. 选择 New project(新项目)
  3. 为你的项目选择一个 Name(名称)
  4. Choose your starting product(选择你的起始产品) 部分,找到 Accelerate 卡片并点击 Get started(开始)
  5. Database connection string(数据库连接字符串) 字段中,粘贴你的 Supabase 连接字符串
  6. 选择离你的数据库最近的 Region(区域)
  7. 点击 Create project(创建项目)
  8. 在下一个屏幕上,点击 Enable Accelerate(启用 Accelerate)

完成这些步骤后,你将被重定向到另一个页面,你需要点击 Generate API key(生成 API 密钥) 按钮。

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

.env
DATABASE_URL="prisma://accelerate.prisma-data.net/?api_key=ey..."
注意

如果你想将 Prisma Migrate 与 Prisma Accelerate 一起使用,你可以在 datasource 块上设置 directUrl 字段

schema.prisma
datasource db {
url = env("DATABASE_URL") // points to the connection pool for queries
directUrl = env("DIRECT_URL") // points to the database for migrations
}

因此,你需要在你的 .env 文件中设置 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 --no-engine

--no-engine 选项用于在生成的 Prisma Client 库中省略查询引擎。查询引擎管理 Prisma ORM 的内部连接池,在使用 Prisma Accelerate 时不需要。

6. 通过连接池发送查询

在你的应用程序代码中,你现在需要将 Accelerate 扩展应用于你的 Prisma Client 实例

import { PrismaClient } from "./generated/prisma"
import { withAccelerate } from "@prisma/extension-accelerate"

const prisma = new PrismaClient().$extends(withAccelerate())

此时,你现在可以开始发送查询,这些查询将通过连接池路由到你的数据库。


与 Prisma 保持联系

通过与以下方式联系,继续你的 Prisma 之旅 我们活跃的社区。保持了解,参与其中,并与其他开发者协作

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

© . All rights reserved.