跳至主要内容

Prisma Pulse 入门

先决条件

info

Prisma Pulse 目前支持 PostgreSQL。 我们很乐意听取 您希望看到哪些数据库 在未来得到支持。

要开始使用 Pulse,您需要以下内容

1. 在平台控制台中启用 Pulse

1.1. 选择您要为其启用 Pulse 的环境

打开,导航到您选择的 Workspace,然后选择项目并选择您要启用 Pulse 的环境。

如果您在 Workspace 中还没有项目,您可以创建一个新项目。

1.2. 启用 Pulse

在您选择的项目环境中,单击 启用 Pulse 按钮。

1.3. 配置 Pulse

Pulse 设置 屏幕要求您

  1. 提供您的 数据库连接字符串
  2. 选择 Pulse 应托管的 区域
  3. 如果您的数据库使用 IP 允许列表,请启用 静态 IP。 了解有关为 Pulse 启用静态 IP 的更多信息 此处
  4. 决定是否要使用 自动设置数据库复制(仅在付费计划中可用)
  5. 确保 事件持久性 已启用,以便使用 .stream() 提供传递保证(或者如果您想使用 .subscribe() 获取没有传递保证的完全短暂事件,则禁用它)。

完成后,单击屏幕底部的 启用 Pulse 按钮。 这将测试与您数据库的连接。

1.4. 生成 API 密钥

info

如果您已经拥有当前环境的 API 密钥,则可以跳过此步骤并使用现有 API 密钥来使用 Prisma Pulse。

您可以通过单击 生成 API 密钥 按钮来生成 API 密钥。 将 API 密钥存储在安全位置或将其添加到项目的 .env 文件中

.env
PULSE_API_KEY="your_secure_pulse_api_key"

您之后将无法再次访问相同的 API 密钥。

2. 将 Pulse 添加到您的应用程序

启用 Pulse 后,请按照以下步骤将 Pulse 集成到您的应用程序中。 您还可以利用我们 GitHub 上的示例仓库 作为参考指南。

2.1. 安装 Pulse 客户端扩展

info

Pulse 需要 Prisma Client 版本 4.16.1 或更高版本,以及 @prisma/extension-pulse 版本 1.1.0 或更高版本。

安装 Pulse 扩展

npm install @prisma/extension-pulse@latest

2.2. 使用 Pulse 扩展扩展 Prisma Client 实例

添加以下内容以使用 Prisma Pulse 扩展扩展您现有的 Prisma Client 实例

import { PrismaClient } from '@prisma/client'
import { withPulse } from '@prisma/extension-pulse'

const prisma = new PrismaClient().$extends(
withPulse({ apiKey: process.env.PULSE_API_KEY })
)

运行时特定导入

如果您在 tsconfig.json 文件中使用 "moduleResolution":"bundler" 并且您的 Pulse 扩展版本为 1.2.0 或更高版本,请根据您的运行时导入 Pulse 扩展

import { withPulse } from '@prisma/extension-pulse/node';
warning

使用正确的 运行时特定导入 可以防止以下错误

Cannot find module '@prisma/extension-pulse' or its corresponding type declarations.

2.3. 创建您的第一个 Pulse 流

应用 Pulse 扩展后,您可以在 Prisma Schema 中定义的任何模型上使用 Pulse 的 .stream() 方法来流式传输数据更改事件。

在下面的示例中,假设您的 Prisma Schema 具有一个 User 模型。 为 User 模型创建一个流,该流监听该表上的 任何 更改事件

import { PrismaClient } from '@prisma/client'
import { withPulse } from '@prisma/extension-pulse'

const prisma = new PrismaClient().$extends(
withPulse({ apiKey: process.env.PULSE_API_KEY })
)

async function main() {
const stream = await prisma.user.stream()

for await (const event of stream) {
console.log('just received an event:', event)
}
}

main()

3. 测试您的流

运行上面的代码片段后,您可以通过 创建更新删除数据库中的 User 记录来测试流。

您可以使用 Prisma Studio(通过运行 npx prisma studio)或使用您选择的任何其他数据库客户端(如 Posticopsql)来执行此操作。

如果一切正常,您应该看到事件被记录到终端,您可以在其中查看上面的代码片段。 🎉

下一步

您可以尝试对 Pulse 流进行更多过滤,例如

仅流式传输 create 事件:

const stream = await prisma.user.stream({
create: { },
})

仅流式传输 update 事件:

const stream = await prisma.user.stream({
update: { },
})

仅流式传输 delete 事件:

const stream = await prisma.user.stream({
delete: { },
})

Pulse 提供了比这些更精细的过滤器。 您可以在 API 参考 中探索这些过滤器。

需要帮助?

在我们的 Discord#help-and-questions 频道中与我们联系,或与我们的社区联系以了解其他人如何使用 Pulse。