首页 > 解决方案 > AWS AppSync Graphql Subsciprtion - 如果订阅的输入在 Mutation 的列表中,则触发订阅

问题描述

在 AWS AppSync 中,我有以下 GraphQL 架构。

type Mutation{
  myMutation(id:String!): MyResponse
}

type Subscription{
  mySubscription(ids:String):MyResponse @aws_subscribe(mutations: ["myMutation"])
}

type MyResponse{
  ids:[String]
}

我的目标是能够在突变返回 MyResponse 时触发订阅“mySubscription”,以便列表“ids”包含输入到“mySubscription”中的单个 id。

因此,例如,在 React-Native 中,我会执行以下操作:

import * as subscriptions from '../graphql/subscriptions.js'

const mySub = await API.graphql(graphqlOperation(subscriptions.mySubscription,{ids:'1'})).subscribe({
  next: (response) => {

   // DO SOMETHING WITH RESPONSE

  },
  error: (err) => {

  // CATCH ERROR

  }
})

我希望每当“myMutation”生成响应时触发此订阅,例如

data:{
  myMutation:{
   ids:['1','2']
  }
}

或者 ids 是任何其他列表,只要它包含“1”(输入到订阅中的 id)。

这样做的原因是我有一些事件需要根据谁首先附加到突变来触发客户端通知,其中附加到突变的实际人员列表是动态的。能够说“订阅包含我的名字的人员列表的任何事件”,这样的事情会很好。

我唯一的解决方法是为每个单独参与的人触发通知突变,但这需要对我的服务器进行更多调用,而且似乎比我认为的要困难得多。任何帮助将不胜感激。

标签: javascriptamazon-web-servicesreact-nativegraphqlaws-appsync

解决方案


推荐阅读