Apollo/React 变异两个相关表

Big*_*gus 5 graphql react-apollo apollo-client

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

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

option {
    id
    price {
      id
      optionID
      price
      date
    }
    description
}
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

vin*_*nce 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
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

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

希望这可以帮助!