Я пытаюсь сделать вызов mutation на мой сервер graphQL из реагирующего приложения. Код реакции выглядит следующим образом:
client.query({
query: gql`
mutation{
addTeam(input:{name:"Somename", label:"somelabel"})
{error, status}
}`
}).then((resp: any) => {
console.info("Success", resp);
}).catch(err => {
throw err;
})
И я получаю следующую ошибку:
Но если я изменю тот же запрос с mutation на query и внесу необходимые изменения в свой node-graphQL-сервер, чтобы обрабатывать его как query вместо mutation, тот же код будет работать.
Mutationдокументы говорятIn GraphQL, mutations are identical to queries in syntax, the only difference being that you use the keyword
mutationinstead ofquery...
Да, кстати, тот же mutation запрос РАБОТАЕТ в Playground.
Пожалуйста, помогите, ребята, моя работа остановилась из-за этой проблемы.
Спасибо!





В настоящее время существует проблема GitHub, в которой говорится об этой ошибке: https://github.com/apollographql/apollo-client/issues/1539.
Вы должны использовать метод mutate клиента для мутаций, а не метод query. Опции метода можно найти в документах. Apollo имеет собственное мнение о том, как обрабатываются запросы и мутации, поэтому у каждого метода есть разные параметры, соответствующие поведению каждой операции (например, mutate включает параметр refetchQueries).
client.mutate({
mutation: gql`
mutation {
addTeam(input:{name:"Somename", label:"somelabel"}) {
error
status
}
}`,
})
Боже! "client.mutate"... кто знал?
Этот ответ решил мою проблему, но можно ли это сделать с помощью одной строки gql, а не объекта mutation (где mutation используется дважды)? Я использую вызов @rest из Документы клиента Apollo. Они используют gql строку запроса, за которой следует client.query({ query }) вызов API. Любопытно, возможно ли это с теми же входными данными, которые вы использовали здесь.
ваша ссылка на документ больше не работает, не могли бы вы обновить ее, пожалуйста?
Большое спасибо, я не знал, что я был пользователем «client.query» для мутации. +1