AWSAppSync GraphQL Mutation 执行了两次

Posted

技术标签:

【中文标题】AWSAppSync GraphQL Mutation 执行了两次【英文标题】:AWSAppSync GraphQL Mutation executed twice 【发布时间】:2019-06-30 22:21:56 【问题描述】:

所以我不知道this 是否真的描述了我的问题,但它是我能得到的最接近的。

我正在使用 AWSAppsyncClient 进行一些 GraphQL 突变。由于模型的性质,在很大程度上是我的经验不足,我需要创建一个 main 记录,然后创建两个依赖于第一个记录的记录,然后才能将它们链接到数据库中。

目前,我正在执行第一个突变,它返回创建记录的 ID。然后在查询返回的承诺中创建中间记录。它基本上看起来像:

AppsyncClient.mutate(mutation,parameters)//first api call
.then( function (res) 
 // create the new object from the response of the mutation

return AppsyncClient.mutate(mutation,parameters))//second api call
.then( function (res) // second API Call
 // create the new object from the response of the mutation

return AppsyncClient.mutate(mutation,parameters))
.then(etc...

问题是承诺会针对我的 API 重新运行原始请求。例如,创建了第一个记录,并返回了 id,但是在第二个 API 调用中,第一个请求以某种方式再次与新请求一起执行,导致创建了两个原始记录。只要链继续,这种情况就会继续,总是再次执行前一个请求,为每个新对象创建两条记录。 (只有在 promise 中完成另一个查询时才会发生这种情况。)

我不知道这是否足够清楚,如果需要,我很乐意提供更多详细信息,但有人可以告诉我我做错了什么吗?

【问题讨论】:

【参考方案1】:

如果不需要在前端做这个链,如果你使用pipeline,你可以在AppSync层做。您可以创建三个函数并在 PIPELINE 类型的解析器中调用它们。

【讨论】:

以上是关于AWSAppSync GraphQL Mutation 执行了两次的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Amplify 为 GraphQL API (AWS AppSync) 生成类

无法将大型 graphql 模式上传到 aws appsync

如何定义包含复杂对象的 GraphQL 类型模型?

AWS AppSync - 从 AppSync 控制台运行时的 GraphQL 查询超时

用于 AWS AppSync 中的异步计算的 Graphql 订阅

如何通过 AWS AppSync 客户端将保存字符串的变量传递给 GraphQL 查询?