GraphQL.js,关于子字段的参数

Posted

技术标签:

【中文标题】GraphQL.js,关于子字段的参数【英文标题】:GraphQL.js, Arguments on Subfield 【发布时间】:2018-04-05 04:11:46 【问题描述】:

我使用 GraphQL.js 和 Express 建立了一个 GraphQL 数据库,它从硬编码的 JSON 对象中获取数据。我的 JSON 对象如下所示:

exports.store = 
"categories": 
  ... ,
"customers":
  ... ,
"vendors":
  ... ,
"items":
  ... ,
"products": 
  ... ,

每个类别都有多个条目,每个条目都有子字段,具体取决于类别。我已经为所有类别编写了解析器,例如可以通过 id 获取特定客户的数据。

我现在想做的是类似于 SQL 中的 WHERE 子句。产品条目如下所示:

"1": 
             "id":1,
             "name":"Coconut",
             "category":
                 "id":1,
                 "name":"Fruits"
             ,
             "vendor":
                 "id":32,
                 "name":"Exotic Fruits Company"
             
         ,

所以现在我希望能够进行查询,它会为我提供所有具有由其 ID 指定的特定供应商的产品。我可以以某种方式重用我已经为此编写的解析器吗?甚至可以在子字段上设置一个参数来指定要返回哪个父级?

【问题讨论】:

【参考方案1】:

我不明白你所说的to have an argument on a subfield that specified which of it's parents are to be returned 是什么意思。

我读到你想要一个解析器,它只返回带有特定 vendorId 的产品,这应该可以工作:

type Query 
  products($vendorId: Int): [Product]



const resolvers = 
  ...
  products: ( vendorId ) => 
    return store.products.values().filter(product => product.vendor.id === vendorId);
  ,
  ...
;

如果不是这样,请详细说明;)

【讨论】:

感谢您的帮助。

以上是关于GraphQL.js,关于子字段的参数的主要内容,如果未能解决你的问题,请参考以下文章

GraphQL.js Node/Express:如何将对象作为 GraphQL 查询参数传递

GraphQL - Gatsby.js- React 组件。 - 如何查询变量/参数?

如何在 Graphql.js 中使用 GraphQL 订阅

GraphQL JS 使用 .graphql 文件从节点 js 进行查询

关于RDLC子报表添加参数 错误“本地报表处理期间出错 。值不能为空。 参数名:value” 错误解决方法

GraphQL 模式中的特殊字符