使用 GraphQL 转换在 AWS AppSync 中生成带有参数的订阅
Posted
技术标签:
【中文标题】使用 GraphQL 转换在 AWS AppSync 中生成带有参数的订阅【英文标题】:Generate Subscription with arguments in AWS AppSync with GraphQL Transform 【发布时间】: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"])
我需要做什么才能自动生成此订阅?谢谢!
【问题讨论】:
【参考方案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 分支后进行编译。现在可以生成带有参数的订阅,但突变后没有收到结果。我需要为订阅编写解析器吗?以上是关于使用 GraphQL 转换在 AWS AppSync 中生成带有参数的订阅的主要内容,如果未能解决你的问题,请参考以下文章
使用 GraphQL 转换在 AWS AppSync 中生成带有参数的订阅
用户连接到另一个用户作为朋友关系 - AWS GraphQL 转换
通过 AWS AppSync GraphQL API 使用多种授权类型
我们可以在不使用 GraphQL 的情况下在项目中实施 AWS-Appsync 吗?
在 Ionic AWS Starter 模板中使用 Appsync 中的 Graphql 和 AWS Amplify 未捕获的异常 [Object Object]