React Apollo Mutation с REST Link должен быть странно отформатирован для работы - PullRequest
0 голосов
/ 29 октября 2019

Я делаю приложение со списком задач (только интерфейс) с React, React Apollo и React Link REST. У меня не было проблем с мутацией delete, но мутация put (то же самое и с тем же параметром 'id') не работала. После многих попыток я заставил его работать, но, казалось бы, запутанно.

РАБОТАЕТ:

const deleteTodo = gql`
  mutation deleteTodo($id: String!) {
    deleteTodo(id: $id)
      @rest(type: "task", path: "/{args.id}", method: "DELETE") {
        id
        title
        description
        completed
      }
  }
`

ТАКЖЕ РАБОТАЕТ, НО НУЖНО (см. Args.input.id вместо args.id):

const markComplete = gql`
  mutation markComplete($id: String!) {
    markComplete(input: {id: $id})
      @rest(type: "task", path: "/{args.input.id}", method: "PUT") {
        id
        title
        description
        completed
      }
  }
`

Я передаю идентификатор одинаково для обеих мутаций:

 onClick={async (e)=> {
                        const id = e.currentTarget.value;
                        await markComplete({
                            variables: {id},
                            refetchQueries: [{ query: getTodos }]
                        })

                    }}

В примере со странным текстом ясно, что я должен получить доступ к идентификатору изтеперь вложенный объект (args => input => id), но я не понимаю, почему я должен добавить это, чтобы заставить его работать в этом случае.

Мой главный вопрос заключается в том, что я в корне неправильно понимаюо мутациях Аполлона (или, может быть, graphql)?

К вашему сведению: мутация удаления все еще работает, если я реорганизую ее для использования входного объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...