我已经阅读了所有其他关于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编码为字符串并解码。
那里有实际的解决方案吗?这真的不是其他语言的噩梦。
答案 0 :(得分:0)
从属类型必须是“输入”类型,也许您将其设置为“类型”?将此添加到您的架构,它应该可以工作:
// 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
}
}
但是为了简洁起见,您将其缩短了吗?