Laravel Lighthouse GraphQL создает мутацию без «input:» - PullRequest
0 голосов
/ 25 января 2020

Я ищу документацию для Laravel Маяк и вижу два типа мутаций.

mutation {
  createPost(input: { # <-- the "input:" I'm talking about
    title: "My new Post"
    author: {
      connect: 123
    }
  }){
    id
    author {
      name
    }
  }
}

И еще одна мутация без input: (найдена здесь)

mutation CreateTaskWithNotes {
  createTask( # <-- no "input:" here
    id: 45
    name: "Do something"
    notes: [
      {
        content: "Foo bar",
        link: "http://foo.bar"
      },
      {
        content: "Awesome note"
      }
    ]
  ) {
    id
  }
}

Мой вопрос: как мне получить мутации без input: для работы?

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

type Mutation {
    createTask(input: CreateTaskInput! @spread): Task! @create
}

Когда я пытаюсь пропустить input:, GraphQl-площадка жалуется: «Поле createTask аргумент ввод из тип CreateTaskInput требуется, но не предоставляется "

Теперь я пытаюсь изменить схему следующим образом:

type Mutation {
    createTask(CreateTaskInput! @spread): Task! @create
}

Но затем сервер выдает ParseException.

Я предпочитаю синтаксис без input:, потому что он намного менее повторяется. Кто-нибудь может помочь?

1 Ответ

1 голос
/ 25 января 2020

Если вы хотите написать мутацию без input, также пропустите директиву @spread. Итак:

type Mutation {
    createTask(
        id: ID
        name: String
    ): Task! @create
}

Но я думаю, что это "лучшие практики", чтобы иметь это внутри input. Конечно, вы можете делать все, что захотите.

...