查询中对象的 GraphQL 参数

Posted

技术标签:

【中文标题】查询中对象的 GraphQL 参数【英文标题】:GraphQL arguments on Object in query 【发布时间】:2017-11-14 09:55:26 【问题描述】:

我想执行这样的查询:


  houses(owner: "Thomas") 
    id
    color
    cars(type: "Sports Car") 
      name
      year
    
  

但这会返回错误:

"message": "Unknown argument \"type\" on field \"cars\" of type \"House\".",

但是,我能够正确执行此操作:

cars(type: "Sports Car") 
  name
  year

我正在尝试做的事情是否可能?

提前致谢!

【问题讨论】:

这是可能的。请问您可以发布您的类型吗? 这取决于你如何设置你的schema 【参考方案1】:

确保您将 cars 的解析器设置为 houses 的子查询。 houses 查询的结果应作为 root 参数传递给 cars 子查询。

type House 
  id
  color
  cars( type: String! ): [ Car ]


type Car 
  name
  year

您的解析器可能如下所示:

Query: 
  async houses( root, args, context ) 
    return  ... houses ... 
  
,
houses: 
  async cars( root, args, context ) 
    return  ... cars ... 
  

然后为 cars 创建一个解析器,该解析器嵌套在 houses 查询下方。如果您使用 Apollo 的 graphql-tools,这里有一篇文章:Writing resolvers with graphql-tools

希望这会有所帮助!

【讨论】:

以上是关于查询中对象的 GraphQL 参数的主要内容,如果未能解决你的问题,请参考以下文章

如何使用相同的参数查询 Graphql 2 对象

如何将动态参数添加到 graphql 查询中

在 graphQL 中提交对象数组作为查询变量

如何使用参数创建 GraphQL 对象?

如何在GraphQL中添加自定义查询?

在 GraphQL .NET 中,如何指定查询可以采用可选参数?