本地开发
Prisma Accelerate 通过集成的连接池和全局数据库缓存,高效地扩展生产流量。
在开发环境中,您可能希望使用本地数据库以最大限度地减少开销。此外,您可以考虑扩展 Prisma Client 与 Accelerate 客户端扩展一次,以便您可以在开发中使用本地数据库,并在生产中使用启用 Accelerate 的连接池和缓存的托管数据库。这消除了在开发和生产之间切换客户端的条件逻辑的需要。
本指南将解释如何在具有本地数据库的开发环境中使用 Prisma Accelerate 客户端扩展。
在开发和生产中使用 Prisma Accelerate 客户端扩展
Accelerate 不适用于本地数据库。但是,在开发环境中,您仍然可以使用带有 Accelerate 客户端扩展的 Prisma Client。此设置不会提供 Accelerate 的连接池和缓存功能。
以下步骤概述了如何在本地 PostgreSQL 数据库中使用 Prisma ORM 和 Prisma Accelerate。
-
使用本地数据库的连接字符串更新
DATABASE_URL
环境变量DATABASE_URL="postgres://username:password@127.0.0.1:5432/localdb"
-
生成 Prisma Client
npx prisma generate
注意:
--no-engine
标志应仅在预览和生产环境中使用。该命令生成不带 Query Engine 文件的 Prisma Client 工件,这需要 Accelerate 连接字符串。 -
使用 Accelerate 客户端扩展设置 Prisma Client
import { PrismaClient } from '@prisma/client'
import { withAccelerate } from '@prisma/extension-accelerate'
const prisma = new PrismaClient().$extends(withAccelerate())Prisma Client 的扩展实例将使用本地数据库。因此,Prisma Accelerate 将不会在您的开发环境中使用,以响应您的 Prisma Client 查询。
如果 Accelerate 连接字符串用作 DATABASE_URL
环境变量,Prisma Client 将通过 Accelerate 路由您的查询。
在边缘函数中本地使用 Prisma Accelerate
当在开发环境中使用边缘函数时,例如 Vercel 的边缘运行时,请按如下方式更新您的 Prisma Client 导入
import { PrismaClient } from '@prisma/client/edge'
通常,边缘函数环境缺乏对现有 API 的原生支持,这些 API 启用基于 TCP 的数据库连接。Prisma Accelerate 提供了一个连接字符串,允许通过 HTTP 查询您的数据库,HTTP 协议在所有边缘运行时中都受支持。