Prisma Pulse 入门指南
前提条件
Prisma Pulse 目前支持 PostgreSQL。我们很想知道您希望接下来支持哪些数据库。
开始使用 Pulse,您需要以下内容
- A
- 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 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 扩展
- 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 模式具有 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。