【问题标题】:Generate Subscription with arguments in AWS AppSync with GraphQL Transform使用 GraphQL 转换在 AWS AppSync 中生成带有参数的订阅
【发布时间】:2019-06-13 09:34:43
【问题描述】:

我目前正在使用 GraphQL 转换库来生成我的所有架构。 我有一个这样定义的模型:

type Feedback @model {
  id: ID!
  event: Event! @connection(name: "EventFeedbacks")
  submittedDate: AWSDateTime!
}

自动生成的订阅模式是这样的:

type Subscription {
    onCreateFeedback: Feedback
        @aws_subscribe(mutations: ["createFeedback"])
}

我想为订阅提供一个参数,以便我只能订阅该事件,如下所示:

type Subscription {
    onCreateFeedback(eventId: ID): Feedback
        @aws_subscribe(mutations: ["createFeedback"])
}

我需要做什么才能自动生成此订阅?谢谢!

【问题讨论】:

    标签: aws-appsync graphql-subscriptions


    【解决方案1】:

    目前不支持自定义订阅字段参数。唯一受支持的自定义是创建绑定到单个突变的多个订阅字段。

    示例:

    type Feedback @model(subscriptions: { onCreate: ["onCreateFeedback", "onCreateFeedbackById"] }) {
      id: ID!
      event: Event! @connection(name: "EventFeedbacks")
      submittedDate: AWSDateTime!
    }
    

    将为订阅类型生成:

    type Subscription {
        onCreateFeedback: Feedback
            @aws_subscribe(mutations: ["createFeedback"])
        onCreateFeedbackById: Feedback
            @aws_subscribe(mutations: ["createFeedback"])
    }
    

    但是您必须在 onCreateFeedbackById 字段上手动添加 eventId 参数。

    不过,我建议在https://github.com/aws-amplify/amplify-cli/issues 中打开功能请求

    【讨论】:

      【解决方案2】:

      正如@Tinou 正确概述的那样,您可以使用subscriptions arg 重命名和关闭由@model 生成的订阅字段,但您还可以通过将Subscription 类型添加到您的架构来创建自定义订阅。

      type Subscription {
          customField(arg: String): String @aws_subscribe(mutations:["customPublish"])
      }
      

      使用这种方法,您可以添加所需的任何字段和参数。

      【讨论】:

      • 在我收到诸如“未知指令@aws_subscribe”之类的错误消息之前。现在我可以在切换到 @aws-amplify/cli 的 multienv 分支后进行编译。现在可以生成带有参数的订阅,但突变后没有收到结果。我需要为订阅编写解析器吗?
      猜你喜欢
      • 2018-09-30
      • 2019-01-07
      • 2019-06-15
      • 2020-01-18
      • 2019-09-16
      • 2020-08-31
      • 2018-10-20
      • 2020-10-27
      • 2021-09-20
      相关资源
      最近更新 更多