Prisma Pulse 入门
先决条件
Prisma Pulse 目前支持 PostgreSQL。 我们很乐意听取 您希望看到哪些数据库 在未来得到支持。
要开始使用 Pulse,您需要以下内容
- 一个
- 连接字符串 指向一个 Pulse 就绪的数据库(如果您还没有,您可以 配置现有数据库 或 使用 Railway 模板)
1. 在平台控制台中启用 Pulse
1.1. 选择您要为其启用 Pulse 的环境
打开,导航到您选择的 Workspace,然后选择项目并选择您要启用 Pulse 的环境。
如果您在 Workspace 中还没有项目,您可以创建一个新项目。
1.2. 启用 Pulse
在您选择的项目环境中,单击 启用 Pulse 按钮。
1.3. 配置 Pulse
Pulse 设置 屏幕要求您
- 提供您的 数据库连接字符串
- 选择 Pulse 应托管的 区域
- 如果您的数据库使用 IP 允许列表,请启用 静态 IP。 了解有关为 Pulse 启用静态 IP 的更多信息 此处。
- 决定是否要使用 自动设置 为 数据库复制(仅在付费计划中可用)
- 确保 事件持久性 已启用,以便使用
.stream()
提供传递保证(或者如果您想使用.subscribe()
获取没有传递保证的完全短暂事件,则禁用它)。
完成后,单击屏幕底部的 启用 Pulse 按钮。 这将测试与您数据库的连接。
1.4. 生成 API 密钥
如果您已经拥有当前环境的 API 密钥,则可以跳过此步骤并使用现有 API 密钥来使用 Prisma Pulse。
您可以通过单击 生成 API 密钥 按钮来生成 API 密钥。 将 API 密钥存储在安全位置或将其添加到项目的 .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 扩展
- Node.js
- Cloudflare Workers
import { withPulse } from '@prisma/extension-pulse/node';
import { withPulse } from '@prisma/extension-pulse/workerd';
使用正确的 运行时特定导入 可以防止以下错误
Cannot find module '@prisma/extension-pulse' or its corresponding type declarations.
2.3. 创建您的第一个 Pulse 流
应用 Pulse 扩展后,您可以在 Prisma Schema 中定义的任何模型上使用 Pulse 的 .stream()
方法来流式传输数据更改事件。
在下面的示例中,假设您的 Prisma Schema 具有一个 User
模型。 为 User
模型创建一个流,该流监听该表上的 任何 更改事件
- 流
- Prisma Schema
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()
model User {
id Int @id @default(autoincrement())
email String @unique
name String?
}
3. 测试您的流
运行上面的代码片段后,您可以通过 创建、更新或删除数据库中的 User
记录来测试流。
您可以使用 Prisma Studio(通过运行 npx prisma studio
)或使用您选择的任何其他数据库客户端(如 Postico 或 psql
)来执行此操作。
如果一切正常,您应该看到事件被记录到终端,您可以在其中查看上面的代码片段。 🎉
下一步
您可以尝试对 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。