使用GraphQL Transform在AWS AppSync中使用参数生成订阅

时间:2019-01-19 08:55:23

标签: aws-appsync graphql-subscriptions

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

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"])
}

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

2 个答案:

答案 0 :(得分:2)

当前不支持自定义订阅字段参数。唯一受支持的自定义功能是创建与单个突变相关的多个订阅字段。

示例:

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"])
}

但是您将不得不在eventId字段上手动添加onCreateFeedbackById参数。

不过,我建议在https://github.com/aws-amplify/amplify-cli/issues

中打开功能请求

答案 1 :(得分:2)

正如@Tinou正确概述的那样,您可以使用pub arg重命名和关闭@model生成的订阅字段,但是还可以通过添加{{1}来创建自定义订阅}输入您的架构。

subscriptions

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