当前位置: 首页 > 知识库问答 >
问题:

GraphQL输入类型声明用于突变

宗冷勋
2023-03-14

我是GraphQL新手,在编写了一些代码之后,我遇到了一个问题,即为一个突变声明一个输入类型。以下是我的模式:

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。工具。SchemaError:预期类型“IdInput”是GraphQLInputType,但事实并非如此!类型是否只允许对象类型被错误地用作输入类型,反之亦然?在graphql。kickstart。工具。SchemaParser。determineType(SchemaParser.kt:400)~[graphql-java-tools-11.0.1.jar:na]位于graphql。kickstart。工具。SchemaParser。在graphql上确定inputType(SchemaParser.kt:417)~[graphql-java-tools-11.0.1.jar:na]。kickstart。工具。SchemaParser。在graphql上确定inputType(SchemaParser.kt:410)~[graphql-java-tools-11.0.1.jar:na]。kickstart。工具。SchemaParser。createInputObject(SchemaParser.kt:179)~[graphql-java-tools-11.0.1.jar:na]位于graphql。kickstart。工具。SchemaParser。graphql上的parseSchemaObject(SchemaParser.kt:79)~[graphql-java-tools-11.0.1.jar:na]。kickstart。工具。SchemaParser。graphql上的makeExecutableSchema(SchemaParser.kt:112)~[graphql-java-tools-11.0.1.jar:na]。kickstart。工具。靴子GraphQLJavaToolsAutoConfiguration。graphQLSchema(GraphQLJavaToolsAutoConfiguration.java:143)~[graphql-kickstart-spring-boot-autoconfigure-tools-11.1.0.jar:na]

我不明白我遗漏了什么,对我来说,“IdInput”被很好地声明为输入,阅读其他一些例子,我觉得它是正确的,但显然不是。我试图将che IdInput声明为类型,而不是输入,但它显然不起作用。如何将输入对象列表传递到输入数组中?如果你需要更多的信息,我会添加它们,目前我只是混合一些声明,以得出正确的一个,但没有成功。提前感谢您的帮助!

共有1个答案

阎修杰
2023-03-14

找出这是一个误导性错误,因为GraphQL模式无法使用变异解析器的签名方法获取。它没有指出这一部分,而是不断打断GraphQL模式声明。一旦根据模式声明了签名方法,一切都像一个符咒。希望它能帮助人们处理这种误导性的错误。

 类似资料:
  • 我使用的是Android系统的图形ql阿波罗客户端。我能够使用单个字段的突变传递数据,没有任何问题。在突变中使用输入对象时,出现了无法读取未定义的电子邮件属性的错误。但是在浏览器中运行时,同样的图形ql工作。 Graphql突变 输入 API调用的Java代码

  • 我正在学习Apollo和graphQL,并将其集成到我的一个项目中。到目前为止一切正常,但现在我正在尝试一些突变,我正在努力处理输入类型和查询类型。我觉得事情比实际情况要复杂得多,因此我正在寻求如何处理我的情况的建议。我在网上找到的示例都是非常基本的模式,但现实总是更加复杂,因为我的模式非常大,如下所示(我只复制一部分): 然后定义输入和负载,依此类推... 为此,我需要一个变异来保存“计算”,因

  • 问题内容: 在Java中,声明有两种有效形式: 在后者中,使用通配符。这种形式称为按需输入类型声明,但是它与前一种有何不同?是否还会导入的子包? 如果是Type( 例如 ,类)怎么办?将其所有内部类都导入吗? 问题答案: 仅导入立即嵌套的类型。该声明不是递归的。 这确实适用于用于导入内部类的类型,也适用于静态导入(用于导入方法)。

  • 如果我更改为: 代码运行良好-但我想转换工作。

  • 我没有正确使用注释吗? 编译错误: 注释工作正常,可以毫无问题地访问该网页。

  • 我正在学习Spring和Data JPA。我对Ehcache有问题。我想缓存我的一个方法的返回值,该方法从数据库返回一些记录。这是一个预配置Ehcache实例的练习(我假设)。问题是,我不能使用注释@cacheable将我的方法标记为它的返回值应该被缓存的方法。我得到一个不兼容类型编译错误(Required:boolean,Found:String)。下面是我的服务层中的一个类,我认为我应该将@c