Я читал все сообщения SO / Hackernoon / Graph.cool об этом, которые я мог найти, но это все еще полностью ускользает от меня.
Скажем, у меня есть тип под названием Person, связанный с Dependant:
type Person {
id: ID! @unique
createdAt: DateTime!
updatedAt: DateTime!
firstName: String
middleName: String
lastName: String
dependants: [Dependant!]!
}
Я просто, абсолютно не могу опубликовать объект Person с его дочерними элементами и заставить сервер не умереть на мне. Логический путь не работает, потому что в жизни нет ничего проще:
mutation CREATE_PERSON (
$firstName: String,
$middleName: String,
$lastName: String,
$dependants: [Dependant!]!,
)
returns "Variable "$dependants" cannot be non-input type "[Dependant!]!"
Мне сказали объединить исходный тип, связанное поле и связанный тип в «PersondependantsDependant»:
mutation CREATE_PERSON (
$firstName: String,
$middleName: String,
$lastName: String,
$dependants: [PersondependantsDependant!]!,
)
return "Unknown type "PersondependantsDependant"
но это, очевидно, не работает, и его не показывают на детской площадке или в чем-то еще. Другие говорят, что это невозможно, и просто JSON-кодирует его в строку и декодирует.
Есть ли реальное решение? Это действительно не кошмар на любом другом языке.


Зависимый тип должен быть «входным» типом, возможно, вы настроили его как «тип»? Добавьте это в свою схему, и он должен работать:
// This will work:
input Dependent {
someField: string!
}
// This will _NOT_ work:
type Dependent {
someField: string!
}
Также кажется, что ваш запрос на мутацию неполный. В настоящее время он принимает только входные параметры, но запроса на мутацию нет ... Он должен выглядеть примерно так:
mutation CREATE_PERSON (
$firstName: String,
$middleName: String,
$lastName: String,
$dependents: [dependents!]!,
) {
createPerson(
firstName: $firstName
middleName: $middleName
lastName: $lastName
dependents: $dependents
) {
# return fields
id
firstName
}
}
Но, может быть, вы сократили его для краткости?