跳到主要内容

Prisma Pulse 入门指南

前提条件

信息

Prisma Pulse 目前支持 PostgreSQL。我们很想知道您希望接下来支持哪些数据库

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

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

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

打开,导航到您选择的工作区,然后选择项目并选择您要在其中启用 Pulse 的环境。

如果您在工作区中还没有项目,您可以创建一个新的。

1.2. 启用 Pulse

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

1.3. 配置 Pulse

Pulse 设置屏幕要求您

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

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

1.4. 生成 API 密钥

信息

如果您已经有当前环境的 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 Client 扩展

信息

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';
警告

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

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

2.3. 创建您的第一个 Pulse 流

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

在下面的示例中,假设您的 Prisma 模式具有 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。