跳至主要内容

本地开发

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

在开发环境中,您可能希望使用本地数据库以最大程度地减少开支。此外,您还可以考虑使用 Accelerate 客户端扩展扩展 Prisma Client 一次,这样您就可以在开发中使用本地数据库,并在启用 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'

通常,边缘函数环境缺乏对现有 API 的本机支持,这些 API 使能基于 TCP 的数据库连接。Prisma Accelerate 提供一个连接字符串,允许您通过 HTTP 查询您的数据库,HTTP 是所有边缘运行时中都支持的协议。