Значение переменных не передано в GraphQL Mutation (React) - PullRequest
1 голос
/ 21 марта 2020

Я застрял на этой ошибке на некоторое время, поэтому любая помощь будет высоко ценится! :)

Я создаю веб-приложение с:

  • Внутренним сервером, работающим с Spring Boot
  • Интерфейсным сервером, работающим с React / TypeScript / GraphQL

До сих пор мне удавалось заставить Бэкенд работать и тестировать его с помощью Insomnia (эквивалент Почтальона ...). Я также смог протестировать интерфейс с простыми запросами без переменных - пока все хорошо ...

Сейчас я пытаюсь передать значение переменных в мутацию (сторона внешнего интерфейса), но получаю следующую ошибку: Хотя мутация работает нормально, если я жестко закодирую значения и удаляю переменные $.

Переменная 'input' привела значение NULL для типа NonNull 'PostInput!'

Если я запустил мутацию с расширением Apollo Chrome, я получаю следующую ошибку (другую) :

{"errors": [{"message": "Неожиданный токен V в JSON в позиции 0", "location": ["ServerParseError: Неожиданный токен V в JSON в позиция 0 \ n в JSON .parse () \ n в http://localhost: 3000 / static / js / 0.chunk. js: 45120: 21"]}]}

Надеюсь, какой-то код поможет:

Мутация

import gql from "graphql-tag";

export const MUTATE_POST = gql`
  mutation MutatePost($input: PostInput!) {
    mutatePost(post: $input) {
      id
      title
      description
    }
  }
`;

Клиент Apollo

import ApolloClient from "apollo-boost";

const URI_DEV = "http://localhost:9090/posts";

export const client = new ApolloClient({
  uri: URI_DEV
});

Root Приложение index.tsx

import { ApolloProvider } from "@apollo/react-hooks";

function App() {
  return (
    <ApolloProvider client={client}>
      <Home />
    </ApolloProvider>
  );
}

render(<App />, document.getElementById("root"));

In React Component

import { useMutation } from "@apollo/react-hooks";

 const [mutatePost] = useMutation(MUTATE_POST);

  const onClickSubmit = () => {
    mutatePost({ variables: { input: { title: "...", description: "..."} } })
      .then(() => {
        onClose();
      })
      .catch(error => {
        console.error(error);
      });
  };

Схема GraphQL (внутренняя сторона)

schema {
    query: Query
    mutation: Mutation
}

input PostInput {
    id: String
    title: String!
    description: String!
}

type Post {
    id: ID!
    title: String!
    description: String!
}

type Query {
    getAllPosts: [Post]!
}

type Mutation {
    mutatePost(post: PostInput!) : Post
    deletePostsByIds(ids: [ID]!) : [Post]
}

Я что-то упускаю / любая опечатка где угодно? Я все еще новичок в этом, к сожалению ...

Заранее благодарю за помощь !!!!!!

...