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

GraphQL中不能有嵌套字段的输入类型。错误:类型应为GraphQLInputType,但不是

宋康安
2023-03-14

我有一个查询,我想给一个购物车对象的嵌套结构作为输入。我还定义了与静态编程语言中的数据类非常相同的结构。

这是模式。图形QLS

type Query {
    calculatePalletDeliveryCosts(input: ShoppingCartInput): Int
}

input ShoppingCartInput {
    products: [ShoppingCartProductInput!]!,
}

input ShoppingCartProductInput {
    productOrderDetails: ProductOrderDetailsInput
}

input ProductOrderDetailsInput {
    orderUnits: [OrderUnitInput]
    quantity: Float!
}

input OrderUnitInput {
    code: String!
}

这是相应的类别:

data class ShoppingCartInput (
    val products: List<ShoppingCartProductInput>,
)

data class ShoppingCartProductInput(
    val productOrderDetails: ProductOrderDetailsInput
)

data class ProductOrderDetailsInput(
    val orderUnit: OrderUnitInput,
    val quantity: Float
)

data class OrderUnitInput(
    val code: String
)

但是,启动应用程序上下文始终会产生:

引起原因:org.springframework.beans.factory.BeanCreation异常:错误创建在类路径资源中定义的名为“图形QLSchema”的bean[图形ql/kickstart/工具/引导/图形QLJavaToolsAutoConfiguration.class]:通过工厂方法实例化Bean失败;嵌套异常org.springframework.beans.BeanInstantiationExc0019:实例化失败[graphql.schema.GraphQLSchema]:工厂方法'GraphQLSchema'抛出异常;嵌套异常是graphql.kickstart.tools.模式错误:预期类型'OrderUnitInput'是一个GraphQLInputType,但它不是!是否仅允许对象类型错误地用作输入类型,或者反之亦然?

共有1个答案

司徒寒
2023-03-14

我刚刚意识到我的模式不一致。图形qls

模式表示:

input ProductOrderDetailsInput {
    orderUnits: [OrderUnitInput]
    quantity: Float!
}

但这门课


data class ProductOrderDetailsInput(
    val orderUnit: OrderUnitInput,
    val quantity: Float
)

我把它们都匹配了,所以现在它可以工作了

 类似资料:
  • 我想要一个函数,该函数可以执行以下操作: 更一般地说,是否存在与此模式匹配的typeclass?

  • 问题内容: 这个错误是什么意思? 嵌套类型HelloWorld无法隐藏封闭类型 其中HelloWorld是Java文件名。这是您需要的代码: 问题答案: 您已经两次定义了HelloWorld类。删除一个级别,就可以了。

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

  • 我无法使elasticsearch聚合+筛选器处理嵌套字段。数据模式(相关部分)如下所示: 本质上,“RB”对象包含一个名为“project”的嵌套字段,该字段包含另外两个字段--“name”和“age”。我正在运行的查询: 该查询应该生成与日期筛选器匹配的前10个项目(project.name字段),按其年龄中值排序,忽略数据库中提及次数少于5次的项目。中位数应仅用于匹配筛选器(日期范围)的项目

  • 问题内容: Whenver我有一个角表达式作为值的,它不会工作: 数字值将转换为字符串,并且复选框根本无法使用。 http://jsfiddle.net/punund/NRRj7/3/ 问题答案: 您不能动态更改输入的类型,因为IE不允许这样做,并且AngularJS需要跨浏览器兼容。因此,即使您可能会看到更改后的类型显示在源代码中,AngularJS也不会接受它- 类型仅被评估一次,并且无法更改

  • 我有一个错误,当试图解析我的JSON并显示在文本中,而不是作为一个。 下面是我的JSON结构。 这是我的未来API异步。 这是我显示JSON的代码。 当我试图获取数据时,我得到了这样的错误。 我应该修复哪个代码?