【问题标题】:GraphQL Input type declaration for MutationMutation 的 GraphQL 输入类型声明
【发布时间】:2021-11-25 19:51:23
【问题描述】:

我是 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!
}

当我运行我的应用程序时,我得到了错误

原因:graphql.kickstart.tools.SchemaError:预期类型 'IdInput' 是一个 GraphQLInputType,但它不是!只是一个类型 允许错误地用作输入类型的对象类型,或 反之亦然?在 graphql.kickstart.tools.SchemaParser.determineType(SchemaParser.kt:400) ~[graphql-java-tools-11.0.1.jar:na] 在 graphql.kickstart.tools.SchemaParser.determineInputType(SchemaParser.kt:417) ~[graphql-java-tools-11.0.1.jar:na] 在 graphql.kickstart.tools.SchemaParser.determineInputType(SchemaParser.kt:410) ~[graphql-java-tools-11.0.1.jar:na] 在 graphql.kickstart.tools.SchemaParser.createInputObject(SchemaParser.kt:179) ~[graphql-java-tools-11.0.1.jar:na] 在 graphql.kickstart.tools.SchemaParser.parseSchemaObjects(SchemaParser.kt:79) ~[graphql-java-tools-11.0.1.jar:na] 在 graphql.kickstart.tools.SchemaParser.makeExecutableSchema(SchemaParser.kt:112) ~[graphql-java-tools-11.0.1.jar:na] 在 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,但它显然不起作用。如何将输入对象列表传递到输入数组中? 如果您需要更多信息,我会添加它们,目前我只是混合一些声明以提出正确的声明,但没有成功。 提前感谢您的帮助!

【问题讨论】:

  • 架构对我来说看起来不错,错误一定来自其他地方。也许IdIntput 声明为type 在您的架构中的其他地方?您确定失败来自您共享的代码吗?您是否尝试过简单的突变,例如test(id: IdInput) ID,看看能不能通过?
  • 你是对的,它来自其他地方:在 Mutation 解析器中,我在方法的签名中声明了错误的 TestTypesInput。实际上,我并没有更改它,因为我看到了这个错误并专注于 GraphQL 架构,认为问题就在那里,一旦修复,我就可以相应地设置方法的签名。发现真的很失望。感谢您的宝贵时间!
  • 别担心,很高兴你发现了 :)

标签: java graphql graphql-java


【解决方案1】:

发现这是一个误导性错误,因为 GraphQL 架构无法使用 Mutation Resolver 的签名方法获取。它没有指出那部分,而是不断地打破 GraphQL Schema 声明。 一旦根据 Schema 声明了签名方法,一切都像魅力一样。 希望它可以帮助处理这种误导性错误的人。

【讨论】:

    猜你喜欢
    • 2019-06-11
    • 1970-01-01
    • 2020-04-21
    • 2021-06-30
    • 2019-03-13
    • 1970-01-01
    • 2021-03-21
    • 2022-06-11
    • 2019-03-15
    相关资源
    最近更新 更多