服务端订阅

本文属使用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: "[email protected]" },
    where: { id: "cjcgo976g5twb018740bzyy4q" }
  ) {
    id
  }
}

你可能感兴趣的:(服务端订阅)