跳到主要内容

本地开发

Prisma Accelerate 通过集成的连接池和全局数据库缓存有效地扩展生产流量。

在开发环境中,您可能希望使用本地数据库以最大程度地降低费用。此外,您可以考虑一次性使用 Accelerate 客户端扩展来扩展 Prisma Client,这样您就可以在开发环境中使用本地数据库,在生产环境中使用启用 Accelerate 连接池和缓存的托管数据库。这消除了在开发和生产环境之间切换客户端的条件逻辑的需求。

本指南将解释如何在开发环境中使用带本地数据库的 Prisma Accelerate 客户端扩展。

在开发和生产环境中使用 Prisma Accelerate 客户端扩展


Using Prisma Accelerate client extension in development

Accelerate 不适用于本地数据库。但是,在开发环境中,您仍然可以使用带有 Accelerate 客户端扩展的 Prisma Client。这种设置不会提供 Accelerate 的连接池和缓存功能。

以下步骤概述了如何在本地 PostgreSQL 数据库中使用 Prisma ORM 和 Prisma Accelerate。

  1. 使用本地数据库的连接字符串更新 DATABASE_URL 环境变量

    DATABASE_URL="postgres://username:password@127.0.0.1:5432/localdb"
  2. 生成 Prisma Client

    npx prisma generate

    注意:--no-engine 标志只能在预览和生产环境中使用。该命令生成不包含 查询引擎 (Query Engine) 文件的 Prisma Client artifacts,这需要 Accelerate 连接字符串。

  3. 使用 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 查询。

Using Prisma Accelerate client extension in production

如果使用 Accelerate 连接字符串作为 DATABASE_URL 环境变量,Prisma Client 将通过 Accelerate 路由您的查询。

在边缘函数中本地使用 Prisma Accelerate

当您在开发环境中使用边缘函数(例如 Vercel 的边缘运行时)时,按如下方式更新您的 Prisma Client 导入

import { PrismaClient } from '@prisma/client/edge'

一般来说,边缘函数环境缺乏对现有启用基于 TCP 的数据库连接的 API 的原生支持。Prisma Accelerate 提供了一个连接字符串,允许通过 HTTP 查询数据库,这是一种所有边缘运行时都支持的协议。