Prisma Pulse 入门
先决条件
Prisma Pulse 目前支持 PostgreSQL。我们很乐意听取您希望支持哪些数据库的意见。
要开始使用 Pulse,您需要以下内容
- 一个
- 已准备好 Pulse 的数据库的**连接字符串**(如果您还没有,您可以配置现有数据库或使用 Railway 模板)
- 使用Prisma ORM的项目
1. 在平台控制台中启用 Pulse
1.1. 选择您要为其启用 Pulse 的环境
打开,导航到您选择的开发空间,然后选择项目并选择您要启用 Pulse 的环境。
如果您在开发空间中还没有项目,则可以创建一个新项目。
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 架构
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。