在GraphQL中,如何优雅定义范围扩大的查询?

时间:2019-11-06 19:21:53

标签: graphql

假设我有一个这样的域:

type ProductSku {
  id: ID!
  name: String
}

type ProductLine {
  id: ID!
  name: String
  productSkus: [ProductSku]
}

type Manufacturer {
  id: ID!
  name: String
  productLines: [ProductLine]
}

在我的网站上,我有这样的路线:

  • /-所有制造商的列表
  • /apple-有关Manufacturer apple
  • 的信息
  • /apple/iphone-11/-有关ProductLine下的iphone-11 apple的信息
  • /apple/iphone-11/64gb-black-有关ProductSku64gb-blackiphone-11 apple的信息

我无法为我的GraphQL服务器设计Query类型。

我从这里开始:

type Query {
  manufacturers: [Manufacturer]
}

这给了我所有数据,因此可以完成工作。但是,由于我丢弃了客户端的大部分数据,因此对于嵌套路由而言效率很低。

或者,我可以为每个路线定义一个查询:

type Query {
  manufacturers: [Manufacturer]
  manufacturer(manufacturerId: ID): Manufacturer
  productLine(manufacturerId: ID, productLineId: ID): ProductLine
  productSku(manufacturerId: ID, productLineId: ID, productSkuId: ID): ProductSku
}

但这似乎很冗长。

我应该如何处理?


请注意,这些ID仅在父级空间内是唯一的。例如,可能有两个包含产品SKU black-64gb的产品线。这是因为它们实际上是来自URL的信息。

0 个答案:

没有答案