跳至主要内容

本地开发

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

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

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

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


Using Prisma Accelerate client extension in development

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

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

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

    DATABASE_URL="postgres://username:[email protected]:5432/localdb"
  2. 生成 Prisma Client

    npx prisma generate

    注意:--no-engine 标志仅应在预览和生产环境中使用。该命令会生成 Prisma Client 工件,而无需 查询引擎 文件,这需要 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 查询数据库,HTTP 协议在所有边缘运行时中都受支持。