Apollo和AwsAppsync在回调中重复突变

时间:2019-02-15 10:17:40

标签: graphql apollo aws-appsync

我有一个awsAppSync客户端,其设置如下:

that._getClient = function() {
        return  client = new AWSAppSyncClient({
            url: appSyncUrl,
            region: AWS.config.region,
            auth: {
                type: AUTH_TYPE.AWS_IAM,
                credentials: AWS.config.credentials
            }
        });
    }

还有一个这样的变异函数:

that.mutate = function(mutation, variables) {
  let client = that._getClient();
  return client.mutate({ mutation: mutation, fetchPolicy: 'no-cache', variables: variables })
  .then(function (result){
    return result;
  });
}

我需要进行后续查询以创建彼此依赖的不同记录,因此我将返回新创建记录的ID,以用于上一个查询的回调中。

问题在于,在调用mutate函数的每个回调中,导致该回调的变异都将再次执行。例如,我这样做:

appSync.mutate(mutation, requestParams)
.then(function (response) {
let id = response.id
requestParams = {//new stuff}
return appSync.mutate(mutation, requestParams)
        })
.then(//and so forth)

现在,我在这里看到一些帖子说这可能与乐观的回应有关,依此类推,但实际上我的数据库中有两条新记录。我还认为缓存做得有些奇怪,但是从代码中可以看出,我(认为)为突变禁用了它。

请帮助。

0 个答案:

没有答案