【问题标题】:GraphQL arguments on Object in query查询中对象的 GraphQL 参数
【发布时间】: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

标签: node.js express ecmascript-6 graphql graphql-js


【解决方案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

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2018-11-12
    • 1970-01-01
    • 2019-01-26
    • 1970-01-01
    • 2019-10-05
    • 2017-03-14
    • 2020-09-09
    • 2019-04-19
    • 2017-03-31
    相关资源
    最近更新 更多