Мутация GraphQL typedef должна принимать массив

Как я могу передать массив настраиваемого типа в мутации при объявлении typeDefs в GraphQL?

type Itinerary {
  name: String!
  itinerary: [Location]!
}

input Location {
  name: String!
  country: String
  region: String
  city: String
  duration: Int!
}

type Mutation {
  addItinerary(
    name: String!,
    itinerary: [Location]!,
  ): Itinerary
}

Я получаю сообщение об ошибке в graphiql «Тип Itinerary.itinerary должен быть Типом вывода, но получено: [Местоположение]!»

Вроде бы такая тривиальная задача, но я не смог найти ничего конкретного для этого случая


person Frapetim    schedule 13.09.2018    source источник


Ответы (1)


Вы возвращаете тип Itinerary, который сам содержит вложенный Location, однако вы указали, что Location является типом ввода, который не может быть возвращен в результате мутации. Вам нужно определить отдельные типы ввода, и вы не можете их вернуть.

person Andy Ray    schedule 13.09.2018
comment
Спасибо за ответ, я не уверен, что правильно понимаю, о чем вы говорите. Не могли бы вы привести пример? Какие поля мне нужно объявить как входные? я ценю вашу помощь - person Frapetim; 13.09.2018
comment
input Location ‹слово input означает, что вы объявили это как тип ввода, так как его можно использовать только для определения аргументов ввода пользователя для запросов и мутаций. - person Andy Ray; 13.09.2018
comment
Это правильно, Location - это пользовательский ввод, который будет использоваться только для запросов и мутации. Я все еще ищу аналогичный пример в документации, но не могу его найти. Каков правильный синтаксис для передачи его в качестве аргумента массива в мутации? - person Frapetim; 13.09.2018
comment
Вы говорите, что возвращаемый тип вашей мутации - это маршрут здесь: ): Itinerary - person Andy Ray; 13.09.2018