Я пытаюсь сделать мутацию GraphQl, используя apollo graphQl client .
Создает error 500
, когда переменные мутации содержат ___typename
свойства (которых, очевидно, нет в схеме graphQl).
Чтобы исправить это,можно установить addTypename: false
в конфигурации клиента graphQl:
const graphqlClient = new ApolloClient({
link: authLink.concat(httpLink),
cache: new InMemoryCache({
addTypename: false
})
})
Теперь мутация почти работает…
Но есть новая ошибка: You're using fragments in your queries, but either don't have the addTypename: true option set in Apollo Client, or you are trying to write a fragment to the store without the __typename. Please turn on the addTypename option and include __typename when writing fragments so that Apollo Client can accurately match fragments.
Так как же настроить клиент GraphQl для обработки мутаций?
сейчас я использую функцию очистки, найденную здесь :
const removeTypename = (value) => {
if (value === null || value === undefined) {
return value;
} else if (Array.isArray(value)) {
return value.map(v => removeTypename(v));
} else if (typeof value === 'object') {
const newObj = {};
Object.keys(value).forEach(key => {
if (key !== '__typename') {
newObj[key] = removeTypename(value[key]);
}
});
return newObj;
}
return value;
};
, ноэто кажется хакерским.Есть ли что-то встроенное в GraphQl клиент?