Mutation 的 GraphQL 输入类型声明
GraphQL Input type declaration for Mutation
我是 GraphQL 的新手,经过一些编码后,我遇到了为 Mutation 声明输入类型的问题。
这是我的架构:
type Test {
id: ID!
label: String!
}
extend type Query {
test(id : ID!): Test
listTests (where: myWhereCondition, orderBy: myOrderByCondition): [Test!]!
}
extend type Mutation {
createTest(label: String!, testTypes: TestTypesInput): Test!
}
input TestTypesInput {
testTypes: [IdInput]
}
input IdInput {
id: ID!
}
当我 运行 我的应用程序时,出现错误
Caused by: graphql.kickstart.tools.SchemaError: Expected type
'IdInput' to be a GraphQLInputType, but it wasn't! Was a type only
permitted for object types incorrectly used as an input type, or
vice-versa? at
graphql.kickstart.tools.SchemaParser.determineType(SchemaParser.kt:400)
~[graphql-java-tools-11.0.1.jar:na] at
graphql.kickstart.tools.SchemaParser.determineInputType(SchemaParser.kt:417)
~[graphql-java-tools-11.0.1.jar:na] at
graphql.kickstart.tools.SchemaParser.determineInputType(SchemaParser.kt:410)
~[graphql-java-tools-11.0.1.jar:na] at
graphql.kickstart.tools.SchemaParser.createInputObject(SchemaParser.kt:179)
~[graphql-java-tools-11.0.1.jar:na] at
graphql.kickstart.tools.SchemaParser.parseSchemaObjects(SchemaParser.kt:79)
~[graphql-java-tools-11.0.1.jar:na] at
graphql.kickstart.tools.SchemaParser.makeExecutableSchema(SchemaParser.kt:112)
~[graphql-java-tools-11.0.1.jar:na] at
graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration.graphQLSchema(GraphQLJavaToolsAutoConfiguration.java:143)
~[graphql-kickstart-spring-boot-autoconfigure-tools-11.1.0.jar:na]
我不明白我错过了什么,对我来说,“IdInput”被很好地声明为 input
并且阅读了一些其他示例,它对我来说看起来是正确的,但显然不是。我试图将 che IdInput 声明为 type
insted of input
,但它显然不起作用。如何将输入对象列表传递到输入数组中?
如果您需要更多信息,我会添加它们,目前我只是混合一些声明以提出正确的声明,但没有成功。
预先感谢您的帮助!
发现这是一个误导性错误,因为 GraphQL 模式无法使用 Mutation Resolver 的签名方法获取。它没有指出那部分,而是一直中断 GraphQL Schema 声明。
一旦根据 Schema 声明了签名方法,一切都会顺利进行。
希望它可以帮助某人处理这种误导性错误。
我是 GraphQL 的新手,经过一些编码后,我遇到了为 Mutation 声明输入类型的问题。 这是我的架构:
type Test {
id: ID!
label: String!
}
extend type Query {
test(id : ID!): Test
listTests (where: myWhereCondition, orderBy: myOrderByCondition): [Test!]!
}
extend type Mutation {
createTest(label: String!, testTypes: TestTypesInput): Test!
}
input TestTypesInput {
testTypes: [IdInput]
}
input IdInput {
id: ID!
}
当我 运行 我的应用程序时,出现错误
Caused by: graphql.kickstart.tools.SchemaError: Expected type 'IdInput' to be a GraphQLInputType, but it wasn't! Was a type only permitted for object types incorrectly used as an input type, or vice-versa? at graphql.kickstart.tools.SchemaParser.determineType(SchemaParser.kt:400) ~[graphql-java-tools-11.0.1.jar:na] at graphql.kickstart.tools.SchemaParser.determineInputType(SchemaParser.kt:417) ~[graphql-java-tools-11.0.1.jar:na] at graphql.kickstart.tools.SchemaParser.determineInputType(SchemaParser.kt:410) ~[graphql-java-tools-11.0.1.jar:na] at graphql.kickstart.tools.SchemaParser.createInputObject(SchemaParser.kt:179) ~[graphql-java-tools-11.0.1.jar:na] at graphql.kickstart.tools.SchemaParser.parseSchemaObjects(SchemaParser.kt:79) ~[graphql-java-tools-11.0.1.jar:na] at graphql.kickstart.tools.SchemaParser.makeExecutableSchema(SchemaParser.kt:112) ~[graphql-java-tools-11.0.1.jar:na] at graphql.kickstart.tools.boot.GraphQLJavaToolsAutoConfiguration.graphQLSchema(GraphQLJavaToolsAutoConfiguration.java:143) ~[graphql-kickstart-spring-boot-autoconfigure-tools-11.1.0.jar:na]
我不明白我错过了什么,对我来说,“IdInput”被很好地声明为 input
并且阅读了一些其他示例,它对我来说看起来是正确的,但显然不是。我试图将 che IdInput 声明为 type
insted of input
,但它显然不起作用。如何将输入对象列表传递到输入数组中?
如果您需要更多信息,我会添加它们,目前我只是混合一些声明以提出正确的声明,但没有成功。
预先感谢您的帮助!
发现这是一个误导性错误,因为 GraphQL 模式无法使用 Mutation Resolver 的签名方法获取。它没有指出那部分,而是一直中断 GraphQL Schema 声明。 一旦根据 Schema 声明了签名方法,一切都会顺利进行。 希望它可以帮助某人处理这种误导性错误。