AWSAppSync GraphQL突变执行两次

时间:2019-02-06 21:04:35

标签: graphql apollo aws-appsync

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

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

当前,我正在做第一个突变,它返回创建的记录的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...

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

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

1 个答案:

答案 0 :(得分:1)

如果不需要在前端建立此链,则可以使用pipeline在AppSync层上进行。您可以创建三个函数,并在类型为PIPELINE的解析器中调用它们。