本地开发
Prisma Accelerate 通过集成的连接池和全局数据库缓存,高效扩展生产流量。
在开发环境中,您可能希望使用本地数据库以最大程度地减少开销。 此外,您可以考虑一次性使用 Accelerate 客户端扩展来扩展 Prisma Client,以便您可以在开发中使用本地数据库,并在生产中使用启用 Accelerate 连接池和缓存的托管数据库。 这样就无需使用条件逻辑来切换开发和生产环境中的客户端。
本指南将解释如何在具有本地数据库的开发环境中使用 Prisma Accelerate 客户端扩展。
在开发和生产环境中使用 Prisma Accelerate 客户端扩展
Accelerate 不适用于本地数据库。 但是,在开发环境中,您仍然可以使用带有 Accelerate 客户端扩展的 Prisma Client。 此设置不会提供 Accelerate 的连接池和缓存功能。
以下步骤概述了如何在本地 PostgreSQL 数据库中使用 Prisma ORM 和 Prisma Accelerate。
-
使用本地数据库的连接字符串更新
DATABASE_URL
环境变量DATABASE_URL="postgres://username:[email protected]: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 是所有边缘运行时都支持的协议。