跳至主要内容

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 客户端扩展

信息

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 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。