在 Relay.js 中,什么是“客户端突变标识符”?

Syn*_*nia 5 relay graphql graphql-js relayjs relaymodern

在此处的中继文档中,它说:

Relay 使用通用的突变模式,其中突变类型的根字段具有单个参数(输入),并且输入和输出都包含用于协调请求和响应的客户端突变标识符。

但在他们提供的示例中,输入和输出分别如下所示:

// IntroducedShipInput
{
  "input": {
    "shipName": "B-Wing",
    "factionId": "1"
  }
}

// IntroducedShipPayload
{
  "introduceShip": {
    "ship": {
      "id": "U2hpcDo5",
      "name": "B-Wing"
    },
    "faction": {
      "name": "Alliance to Restore the Republic"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

那么client mutation标识符是什么呢?为什么以及如何使用它来协调请求和响应?

Ers*_*nci 2

我仍然不能 100% 确定“客户端突变标识符”到底发生了什么,但经过一些研究,它似乎是以前版本的 Relay 中的要求。该 PR 显然通过用其他机制替换它来删除了该要求,但我不清楚其他机制的作用。我留下了一条评论,要求对文档进行更多说明,该文档似乎已经过时了。

无论如何,客户端突变标识符似乎与 Facebook 的 GraphQL 实现中有关突变幂等性的一些假设有关