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
AWS AppSync - 从 AppSync 控制台运行时的 GraphQL 查询超时