Все прочитал, решения и конкретного объяснения не понял (даже здесь: Apollo / GraphQl - тип должен быть типом ввода)
Я хочу создать объектную Систему, содержащую Солнца. Итак, я делаю:
type System {
_id: ID
name: String! @unique
diameter: Int
suns: [Sun]
}
type Sun {
_id: ID
name: String
diameter: Int
}
type Mutation {
createSystem(name: String!, diameter: Int, suns: [Sun]): System!
}
И я пишу на детской площадке:
mutation {
createSystem(name:"new system", suns: [{ name: "John" }]) {
name
suns
}
}
Но я получил терминальную ошибку: «Ошибка: тип Mutation.createSystem (suns :) должен быть типом ввода, но получил: [Sun]».
Я понимаю, что Солнце не воспринимается как объект. Как объявить это как объект?
Большое спасибо за ваши ответы
Спасибо @DanielRearden. Собственно, я уже читал этот пост и ВООБЩЕ не понял, как реализовать тип объекта внутри другого типа объекта ... Спасибо за помощь! :)


Спецификация GraphQL. не позволяет использовать type (т. е. тип вывода) в качестве входного аргумента. Он позволяет только входным аргументам быть enum, Scalar и Input. Это означает, что вам нужно создать SunInput
input SunInput {
_id: ID
name: String
diameter: Int
}
Большое спасибо за помощь, Кен. Но я все еще не понимаю, как реализовать этот SunInput в моей мутации? createSystem (имя: String !, диаметр: Int, солнце: [SunInput]): System! Не работает!
@AlexandreLafayette, это должно решить проблему, какую ошибку вы получаете?
Вам необходимо создать собственный «Тип» для солнца с его собственным преобразователем.
suns: { type: new GraphQLList(SunType) } // just an example
mutation {
createSystem(name:"new system", suns-names: "John") {
name
}
}
У него будет преобразователь, который записывает новую систему в базу данных, называемую новой системой, которая, например, добавляет солнце «SunType» в коллекцию базы данных с именем «Sun».
Возможный дубликат Apollo / GraphQl - тип должен быть типом ввода