Прежде всего, GraphQL - это не JSON.Поэтому нет смысла использовать здесь JSON.stringify.В GraphQL вы можете использовать переменные в качестве аргументов для решения вашей проблемы.Затем вы можете предоставить свои переменные в формате JSON.
Не зная, какую библиотеку вы используете, я предполагаю, что вы общаетесь со своим сервером graphql без какой-либо библиотеки graphql.Я предполагаю, что вы используете что-то похожее на fetch
.
Я предполагаю, что у вас есть что-то вроде UpdateUserInput в качестве типа graphql для вашего входного аргумента.Поэтому, чтобы использовать переменные, вам нужно переписать вашу мутацию следующим образом:
mutation UpdateUser($input: UpdateUserInput) {
updateUser(user: $user) {
id
name
}
}
Затем вы можете предоставить свои переменные следующим образом:
input: JSON.stringify(input)
Таким образом, полный вызов fetch
будет выглядетьчто-то вроде этого
const data = {
query: `
mutation ($input: UpdateUserInput) {
updateUser(user: $user) {
id
name
}
}
`,
variables: {
user: input
}
};
fetch(url, {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(data),
});
Но сложно сказать, как это правильно реализовать, не зная клиентскую библиотеку GraphQL.Может быть, вы захотите взглянуть на ApolloClient.
Также имейте в виду, что я не тестировал этот код, поэтому могут быть небольшие ошибки.