跳到主要内容

使用 Prisma Postgres 进行本地开发

Prisma Postgres 是一种生产级、云原生数据库,非常适合暂存和生产环境。为了快速迭代和隔离测试,您可以通过 prisma dev 命令运行本地 Prisma Postgres 实例(由 PGlite 提供支持)。本页介绍了如何安装和启动本地 Prisma Postgres 数据库。

注意

本地 Prisma Postgres 处于预览版,正在积极开发中。

为 Prisma Postgres 设置本地开发环境

请按照以下步骤设置 Prisma Postgres 的本地开发环境。

注意

请确保您正在运行 Node.js 20 或更高版本,这是本地 Prisma Postgres 所必需的。

1. 启动本地 Prisma Postgres

进入您的项目并使用以下命令启动本地 Prisma Postgres 服务器

npx prisma dev

这将启动一个本地 Prisma Postgres 服务器,您可以使用 Prisma ORM 或其他工具连接到它。命令的输出如下所示:

$ npx prisma dev
✔ Great Success! 😉👍

Your prisma dev server default is ready and listening on ports 63567-63569.

╭──────────────────────────────╮
│[q]uit [h]ttp url [t]cp urls│
╰──────────────────────────────╯

现在按

  • q 退出
  • h 查看连接 URL,以便通过 Prisma ORM 进行连接
  • t 查看连接 URL,以便通过 任何工具 进行连接

如果您想通过 Prisma ORM 连接,请按键盘上的 h,复制 DATABASE_URL 并将其存储在您的 .env 文件中。这将用于连接本地 Prisma Postgres 服务器

.env
DATABASE_URL="prisma+postgres://localhost:51213/?api_key=__API_KEY__"

DATABASE_URL 是 Prisma 用于连接本地 Prisma Postgres 服务器的连接字符串,并且与 Prisma Postgres 扩展 兼容

import { withAccelerate } from '@prisma/extension-accelerate'

const prisma = new PrismaClient().$extends(withAccelerate())

这确保了在从本地 Prisma Postgres 切换到生产环境中的 Prisma Postgres 时无需额外的代码更改。

在开发应用程序时,请保持本地 Prisma Postgres 服务器在后台运行。

2. 应用迁移和播种数据

然后在另一个终端标签页中,运行 prisma migrate dev 命令来创建数据库并运行迁移

npx prisma migrate dev
注意

在运行 prisma migrate dev 命令之前,请确保本地 Prisma Postgres 服务器正在运行。

如果您必须使用不同的端口,请附加 --port <number>(例如,npx prisma migrate dev --port 5422)并更新您的 DATABASE_URL(或其他连接设置)以匹配。

这将创建数据库并运行迁移。

如果您有播种脚本来播种数据库,您也应该在此步骤中运行它。

3. 在本地运行您的应用程序

启动您应用程序的开发服务器。现在您可以使用 Prisma ORM 对本地 Prisma Postgres 实例执行查询。

要过渡到生产环境,您只需在 .env 文件中将数据库 URL 更新为 Prisma Postgres 连接 URL,而无需额外更改应用程序逻辑。

使用不同的本地 Prisma Postgres 实例

您可以通过 prisma dev 命令的 --name (-n) 选项定位特定的本地 Prisma Postgres 实例,例如

npx prisma dev --name mydb1

每当您向 prisma dev 传递 --name mydb1 时,该命令将返回指向名为 mydb1 的本地实例的相同连接字符串。

将本地 Prisma Postgres 与任何 ORM 配合使用

本地 Prisma Postgres 支持直接 TCP 连接,允许您通过任何工具连接到它。

为了连接到您的本地 Prisma Postgres 实例,请使用 prisma dev 返回的 postgres:// 连接字符串。

通过 Prisma VS Code 扩展管理本地 Prisma Postgres 实例

Prisma VS Code 扩展 具有专门管理 Prisma Postgres 实例的 UI。

要使用它,请安装 VS Code 扩展,并在 VS Code 编辑器的活动栏中找到 Prisma 徽标。它支持以下工作流程:

  • 创建和删除数据库
  • 启动和停止特定数据库的服务器
  • "推送到云端":将数据库从本地移动到远程

已知限制

本地模拟缓存

Prisma Postgres 缓存在本地进行模拟。查询始终直接与本地 Prisma Postgres 实例交互,绕过缓存配置

const users = await prisma.user.findMany({
cache: { ttl: 60 },
});

当您在暂存和生产环境中使用 Prisma Postgres 时,缓存正常工作。

仅限单个连接

本地 Prisma Postgres 数据库服务器一次只接受一个连接。额外的连接尝试会排队,直到当前活动连接关闭。此限制足以满足大多数本地开发和测试场景。

Prisma Postgres 限制适用于本地 Prisma Postgres 数据库

所有 Prisma Postgres 限制也适用于 Prisma Postgres 的本地开发。有关详细信息,请参阅 Prisma Postgres 限制文档

无 HTTPS 连接

本地 Prisma Postgres 服务器不使用 HTTPS。我们不建议自托管它。

© . All rights reserved.