graphQL查询:收到错误“类型的预期值......,找到......”

Posted

技术标签:

【中文标题】graphQL查询:收到错误“类型的预期值......,找到......”【英文标题】:graphQL Query: getting error "Expected value of type ..., found ..." 【发布时间】:2022-01-22 17:09:11 【问题描述】:

假设我有以下对象类型:

    type Price 
        currency: Currency!,
        amount: Float!
    

    type Attribute 
        displayValue: String,
        value: String,
        id: String!
    

    type AttributeSet 
        id: String!,
        name: String,
        type: String,
        items: [Attribute]
    

    type Product 
        id: String!,
        name: String!,
        inStock: Boolean,
        gallery: [String],
        description: String!,
        category: String!,
        attributes: [AttributeSet]
        prices: [Price!]!,
        brand: String!
    

    type Category 
        name: String,
        products: [Product]!
    

    type Currency 
        label: String!,
        symbol: String!
    

    input CategoryInput 
        title: String!
    

    type Query 
        categories: [Category],
        category(input: CategoryInput): Category,
        product(id: String!): Product,
        currencies: [Currency]
    

这些是Category 的类型:

export enum Category 
    all = 'all',
    clothes = 'clothes',
    tech = 'tech'
;

在 graphQL Playground 中,我正在尝试进行查询以显示类别为 all 的元素的所有名称和产品/ID。这是我的尝试:


  category(input: "all") 
    name
    products 
      id
    
  

但我收到以下错误消息:

"message": "Expected value of type \"CategoryInput\", found \"all\".",

由于all 是有效类型,因此我需要帮助来了解问题所在。提前谢谢你。

【问题讨论】:

你的架构是category(input: CategoryInput): Category,其中CategoryInput 是一个具有title 属性的对象。这不是你想要的吗?您的架构中的哪个位置声明了枚举? 是的,现在我发现它令人困惑。那么我应该在“输入”字段中输入什么? 一个GraphQL enum type 只需要一个有效查询的示例,以便我可以将其可视化 问题不在于(仅)与查询有关。您需要先修复 schema 【参考方案1】:

刚刚发现我的错误

CategoryInput 属于类型

input CategoryInput 
        title: String!
    

所以正确的查询应该是:


  category(input:  title: "all" ) 
    name
    products 
      id
    
  

【讨论】:

但这不是枚举?您可以传递 any 字符串作为标题吗?

以上是关于graphQL查询:收到错误“类型的预期值......,找到......”的主要内容,如果未能解决你的问题,请参考以下文章

为啥我收到错误“必须提供查询字符串”。快递-graphql?

为啥我在尝试从 C# 处理程序发布 GraphQL 查询时收到错误请求?

将 Graphql 查询作为 JSON 字符串传递时收到意外的令牌错误

Apollo GraphQL 错误:必须提供查询根类型

prisma - 运行 graphql 查询时获取环境变量未找到错误消息

从 React 向 GraphQL 服务器进行查询时出现意外错误 [重复]