Prisma Accelerate 的本地开发
Prisma Accelerate 通过集成的连接池和全局数据库缓存,高效地扩展生产流量。
在开发环境中,您可能希望使用本地数据库以最大程度地降低开销。此外,您可能考虑一次性使用 Accelerate 客户端扩展来扩展 Prisma Client,这样您就可以在开发中使用本地数据库,并在生产中使用启用了 Accelerate 连接池和缓存的托管数据库。这消除了在开发和生产之间切换客户端的条件逻辑需求。
本指南将解释如何在开发环境中使用 Prisma Accelerate 客户端扩展和本地数据库。
在开发和生产中使用 Prisma Accelerate 客户端扩展
Accelerate 不支持本地数据库。然而,在开发环境中,您仍然可以使用带 Accelerate 客户端扩展的 Prisma Client。此设置将不提供 Accelerate 的连接池和缓存功能。
以下步骤概述了如何将 Prisma ORM 和 Prisma Accelerate 与本地 PostgreSQL 数据库一起使用。
-
使用本地数据库的连接字符串更新
DATABASE_URL
环境变量DATABASE_URL="postgres://username:password@127.0.0.1:5432/localdb"
-
生成 Prisma Client
npx prisma generate
注意:
--no-engine
标志仅应用于预览和生产环境。该命令生成 Prisma Client Artifacts,但不包含 查询引擎 文件,该文件需要一个 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(所有边缘运行时都支持的协议)查询数据库。