Apollo и AwsAppsync повторяют мутацию в обратном вызове

У меня есть клиент 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 ответов

Другие вопросы по тегам