【发布时间】:2016-12-05 08:57:01
【问题描述】:
中继突变被定义为“由写入数据存储然后获取任何更改的字段组成的操作。”。诸如日志记录之类的东西呢?我还没有像在 REST POST、GET 和 PUT 协议中那样找到突变与查询的正式定义。我是否正确,当希望修改和返回数据时会使用突变,但如果我只需要更新某些内容,那么标准查询就可以了吗?在某些情况下,我可能会获取数据但更新不需要返回的内容。
【问题讨论】:
中继突变被定义为“由写入数据存储然后获取任何更改的字段组成的操作。”。诸如日志记录之类的东西呢?我还没有像在 REST POST、GET 和 PUT 协议中那样找到突变与查询的正式定义。我是否正确,当希望修改和返回数据时会使用突变,但如果我只需要更新某些内容,那么标准查询就可以了吗?在某些情况下,我可能会获取数据但更新不需要返回的内容。
【问题讨论】:
Relay 突变被定义为“由写入数据存储然后获取任何更改的字段组成的操作。”。诸如日志记录之类的呢?
如果我正确理解您对 日志记录 的困惑,您想在服务器上记录一些内容,但您的客户端没有任何要更新的内容。如果您想使用 GraphQL 和 Relay 进行日志记录,您应该将此日志记录操作建模为突变。查询实际上是一个只读操作。
如果 logging 是一个错字,而您实际上是指 login,那么之前有很多关于 Relay 和 GraphQL 领域的身份验证的答案。检查以下 SO 和博客文章:
我还没有像在 REST POST、GET 和 PUT 协议中那样找到突变与查询的正式定义。
来自GraphQL draft specification:
There are two types of operations that GraphQL models:
* query – a read‐only fetch.
* mutation – a write followed by a fetch.
当我希望修改和返回数据但如果我只需要更新某些内容时,我是否正确使用突变,那么标准查询就可以了?
不,这是不正确的。变异是您应该用于对数据进行任何类型修改的操作。如果您在更新后不需要获取任何数据,则只需在 fat query 中不包含任何内容。到目前为止,GraphQL 没有任何特定的操作类型可以在不获取数据的情况下进行更新。
【讨论】: