本地开发
Prisma Accelerate 通过集成的连接池和全局数据库缓存有效地扩展生产流量。
在开发环境中,您可能希望使用本地数据库以最大程度地减少费用。此外,您可能考虑扩展 Prisma Client 使用 Accelerate 客户端扩展一次,以便您可以在开发中使用本地数据库,并在启用 Accelerate 的连接池和缓存的情况下使用托管数据库。这消除了在开发和生产之间切换客户端的条件逻辑的需要。
本指南将说明如何在开发环境中使用本地数据库使用 Prisma Accelerate 客户端扩展。
在开发和生产中使用 Prisma Accelerate 客户端扩展
Accelerate 不适用于本地数据库。但是,在开发环境中,您仍然可以使用 Prisma Client 和 Accelerate 客户端扩展。此设置不会提供 Accelerate 的连接池和缓存功能。
以下步骤概述了如何使用 Prisma ORM 和 Prisma Accelerate 与本地 PostgreSQL 数据库。
-
使用本地数据库的连接字符串更新
DATABASE_URL
环境变量DATABASE_URL="postgres://username:[email protected]:5432/localdb"
-
生成 Prisma Client
npx prisma generate
注意:
--no-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'
通常,边缘函数环境缺乏对启用基于 TCP 的数据库连接的现有 API 的本机支持。Prisma Accelerate 提供一个连接字符串,允许您通过 HTTP 查询数据库,HTTP 协议在所有边缘运行时中都受支持。