【问题标题】:appsync subscription with arguments带参数的 appsync 订阅
【发布时间】:2019-01-07 04:42:43
【问题描述】:

我们在订阅带参数时遇到了很大的麻烦

为了简化问题这里是重现的步骤

创建一个简单的Schema

type Mutation {
    testSubMutation(param: String!): String
}

type Query {
    testQuery: String
}

type Subscription {
    testSubs(param: String): String
        @aws_subscribe(mutations: ["testSubMutation"])
}

我将本地解析器附加到返回时间戳的突变。

在一个窗口中打开应用同步查询选项卡并进行订阅

subscription sub{
  testSubs
}

在另一个窗口中进行突变

mutation mut{
  testSubMutation(param:"123")
}

像魅力一样工作

现在更改订阅以监听参数

subscription sub{
  testSubs(param:"123")
}

不再起作用。 :(

感谢任何帮助。

【问题讨论】:

    标签: amazon-web-services graphql subscription aws-appsync


    【解决方案1】:

    我正在做与上述相同的订阅但没有得到响应,它只适用于一个参数room

    mutation addMessage {
      addMessage(input: { 
      room: "45a87f5b-ef9e-41cd-9cd7-f3e2f4946d31", 
      receiver: "3cea9c02-1cf5-4248-8ebe-3580a7a47b8b" }) {
       id
       room
       receiver {
        id
        userName
       }
      }
     }
    
    subscription roomMessage {
      roomMessage(room: "45a87f5b-ef9e-41cd-9cd7-f3e2f4946d31", 
      receiver: "3cea9c02-1cf5-4248-8ebe-3580a7a47b8b") {
        id
        room
        receiver {
          id
          userName
        }
      }
    }
    

    【讨论】:

      【解决方案2】:

      订阅要求您过滤的参数在突变的响应中。您可以尝试将您的突变更新为此吗?

      mutation mut{
        testSubMutation(param:"123") {
          param
        }
      }
      

      【讨论】:

      • 它写在文档的某个地方吗?它确实工作得很好,但有点奇怪,突变的响应取决于它的论点
      • 您能否订阅通过 DynamoDB GUI 而不是 GraphQL 突变在数据库中所做的更改?
      • @hgale 我不这么认为,因为 AppSync 和 Dyanmo 是两个不同的系统。 AppSync 不知道也不关心请求是否正在由 Dynamo 端点或 Lambda 或其他东西处理。您可以连接到发电机流以在表格被修改时触发表格,并使用它将非 AppSync websocket 消息发送到浏览器。但就 AppSync 而言,它只是看到进出的请求,而没有太多关于它们如何在底层解决的情报。
      • 对不起,我错过了你的问题,@hgale。霍伯是正确的。
      • 哇...这太傻了。正如@Rax Wunter 所提到的,我在文档中没有找到这个。
      猜你喜欢
      • 2018-09-30
      • 2019-06-15
      • 2021-06-03
      • 2019-06-13
      • 2019-11-11
      • 2020-08-31
      • 2019-09-21
      • 2018-10-20
      • 2019-09-16
      相关资源
      最近更新 更多