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)
Я видел несколько постов, в которых говорится, что это может быть связано с оптимистичным ответом и т. Д., Но на самом деле в моей базе данных есть две новые записи. Я также думал, что кеш делает что-то трипое, но как вы можете видеть из кода, я (думаю) отключил его для мутации.
Пожалуйста помоги.