Я пытаюсь использовать динамическую переменную в запросе GraphQL с использованием клиента Apollo. Я следовал за документацией, но Аполлон продолжает давать мне ошибки, говоря, что мои переменные не определены, и в конечном итоге отвечает кодом состояния 400.
Вот что сказано в документации для Аполлона:
mutate: (options ?: MutationOptions) => Обещание
Функция для запуска мутации из вашего пользовательского интерфейса. При желании вы можете передавать переменные, optimisticResponse, refetchQueries и update в качестве параметров, которые будут переопределять любые реквизиты, передаваемые компоненту Mutation. Функция возвращает обещание, которое соответствует вашему результату мутации.
А вот код, который я пытался написать:
const fetch = require('node-fetch');
const ApolloClient = require('apollo-boost').default;
const gql = require('graphql-tag');
const client = new ApolloClient({
uri: "http://api.domain.com/graphql",
fetch
});
run();
async function run() {
try {
const resp = await client.mutate({
mutation: gql`mutation {
trackPr(id: $id, pr: $pr, title: $title, body: $body, state: $state, merged: $merged) {
id
}
}`,
variables: {
id: 1,
pr: 1,
title: "test title",
body: "test body",
state: "test state",
merged: false
},
});
console.log(resp.data);
} catch(ex) {
console.log(ex);
}
}
Затем я получу сообщение об ошибке для каждой переменной, говорящее, что она не была определена:
[Ошибка GraphQL]: Сообщение: переменная "$ id" не определена., Местоположение: [объект объекта], [объект объекта], путь: не определено
После каждого из этих сообщений об ошибках я получаю окончательное сообщение с кодом состояния 400:
[Сетевая ошибка]: Ошибка сервера: Ответ не выполнен: Получен код состояния 400
Сама мутация работает нормально без переменных и всех значений, установленных непосредственно в мутации, но я не знаю, почему она считает, что переменные не определены.