我已经阅读了所有内容,没有任何解决方案和具体解释(即使在这里:Apollo / GraphQl - Type must be Input type)
我想创建一个包含Sun的对象系统。所以我这样做:
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 :)的类型必须为Input Type,但得到:[Sun]。”
我知道没有收到Sun作为对象。如何将其声明为对象?
非常感谢您的回答
答案 0 :(得分:1)
GraphQL规范。不允许使用type
(即输出类型)作为输入参数。仅允许输入参数为enum
,Scalar
和Input
。这意味着您必须创建一个SunInput
input SunInput {
_id: ID
name: String
diameter: Int
}
答案 1 :(得分:0)
您需要使用其自己的解析器为sun设置自定义“类型”。
suns: { type: new GraphQLList(SunType) } // just an example
mutation {
createSystem(name:"new system", suns-names: "John") {
name
}
}
它将具有将新系统写入数据库的解析器,称为新系统,例如,将“ SunType”的sun添加到名为“ Sun”的数据库集合中。