0

我在下面有一个问题:

假设我有这样的产品类型

type Option {
  id: Int!
  value: String!
}

type Product{
  id: Int!
  name: String!
  price: Float!
  options: Option
}

如果我有这样的模式,每次我需要产品选项(我从请求中获得 productID)时,我都需要查询整个产品(带有 id、name、price),我将对数据库进行 2 个 Mysql 查询(1 到获取产品和 1 获取产品选项)。

我是否应该在这样的查询对象中有一个额外的独立字段来获取基于 productID 的产品选项?如果我需要像上面一样保留嵌套模式,有没有办法在不执行它的父(产品)解析器的情况下获得产品选项?

product_options(productId: Int!) : Option

谢谢

4

1 回答 1

0

我认为这更像是一个数据关系问题,但尽管如此......

IMO Product OptionsSQL 数据库中的表(如果还没有)应该有一个列,该列是Product它所属/关联的外键。这样做可以让您轻松拥有嵌套的 GraphQL 类型和字段级解析器。

完成后,您将不需要单独查询选项结构,您的字段级解析器Product.options只需查询即可:

{
  product(id: 123) {
    options {
      value
    }
  }
}

您可以在代码中使用已获取Product.id的字段来对其选项行运行字段级查询。

于 2020-04-01T16:12:02.627 回答