6

假设我有两张表,一张包含产品,另一张包含价格。

在 Graphql 中,查询可能如下所示:

option {
    id
    price {
      id
      optionID
      price
      date
    }
    description
}

我向用户展示了一个表单(在 React 中),他们可以在其中同时输入产品详细信息和价格。

当他们提交表单时,我需要在“产品”表中创建一个条目,然后在“价格”表中创建一个相关条目。

我对 Graphql 和 React 非常陌生,我发现它的学习曲线很陡峭,并且一直在关注 Apollo 教程并阅读文档,但到目前为止,这项任务的解决方案仍然是个谜!

有人能把我从痛苦中解脱出来,给我,或者指出我的方向,处理为此必要的突变的最简单的例子吗?

4

1 回答 1

3

长话短说,如果您想针对尽可能少的请求进行优化,这实际上应该由您的服务器处理。

问题:这里的问题是你有一个依赖。您需要先创建产品,然后使用该产品的 ID,将其与新价格相关联。

解决方案:在服务器上实现此功能的最佳方法是在您的变异输入中向 Product 添加另一个字段,该字段允许您在相同的请求输入中输入 Price 的详细信息。这在 Scaphold 上称为“嵌套创建” 。

例如:

// Mutation
mutation CreateProduct ($input: CreateProductInput!) {
  createProduct(input: $input) {
    changedProduct {
      id
      name
      price {
        id
        amount
      }
    }
  }
}

// Variables
{
  input: {
    name: "My First Product",
    price: {
      amount: 1000
    }
  }
}

然后,在服务器上,您可以解析解析器参数中的价格对象,并在创建产品时创建新的价格对象。同时,您也可以在服务器上一次性关联它们。

希望这可以帮助!

于 2017-05-12T18:45:36.940 回答