本文属使用Prisma构建GraphQL服务系列。
介绍
服务器端订阅与正常的GraphQL订阅相当。这意味着它们具有相同的API,例如允许提供相同的过滤器,以便仅通知您感兴趣的事件。
当设置服务器端订阅时,Prisma将监视数据更改并在适用时执行关联的查询,就像正常的GraphQL订阅一样。不同的是交付机制。
服务器端订阅旨在与现代无服务器基础架构配合使用。目前,Prisma支持通过webhook传递事件,并且将来我们将增加对直接AWS Lambda调用的支持以及不同的队列实现。
配置
您可以通过在您的服务的prisma.yml
文件中添加subscriptions
属性来配置服务器端订阅。
prisma.yml
service: my-service
stage: ${env:PRISMA_STAGE}
secret: ${env:PRISMA_SECRET}
cluster: ${env:PRISMA_CLUSTER}
datamodel: database/datamodel.graphql
subscriptions:
userChangedEmail:
webhook:
url: http://example.org/sendSlackMessage
headers:
Content-Type: application/json
Authorization: Bearer cha2eiheiphesash3shoofo7eceexaequeebuyaequ1reishiujuu6weisao7ohc
query: |
subscription {
user(where: {
mutation_in: [UPDATED]
}) {
node {
name
email
}
}
}
示例
上面配置的userChangedEmail
订阅会被类似这样的变化触发:
mutation {
updateUser(
data: { email: "new@email.com" },
where: { id: "cjcgo976g5twb018740bzyy4q" }
) {
id
}
}