我可以使用GraphQL / Relay查询来修改数据而无需提取

时间:2016-07-30 22:47:38

标签: graphql relayjs

中继突变被定义为“对数据存储进行写入,然后获取任何已更改字段的操作”。伐木等事情怎么样?我没有找到突变与查询的正式定义,就像在REST POST与GET与PUT协议中找到的一样。我是否正确当需要修改和返回数据时会使用突变但是如果我只需要更新某些内容那么标准查询就可以了?在某些情况下,我可能会获取数据但更新不需要返回的内容。

1 个答案:

答案 0 :(得分:0)

  

中继突变被定义为“对数据存储进行写入,然后获取任何已更改字段的操作”。记录等事情呢?

如果我理解您对日志记录的错误,您希望在服务器中记录某些内容,但在客户端没有任何要更新的内容。如果要使用GraphQL和Relay进行日志记录,则应将此日志记录操作建模为变异。查询实际上是一个只读操作。

如果记录是一个拼写错误而您实际上是指登录,那么之前有很多关于Relay和GraphQL域中的身份验证的答案。查看以下SO和博客文章:

  1. Relayjs Graphql user authentication
  2. javascript - Authentication and privileges on Relay/GraphQL
  3. api - How do I structure authenticated queries with GraphQL?
  4. node.js - What is a good pattern for implementing access control in a GraphQL server?
  5. graphql - Authentication and Access Control with Relay
  6. node.js - How to check permissions and other conditions in GraphQL query?
  7. relayjs - How to tell the user to log in with relay?
  8. A guide to authentication in GraphQL — Building Apollo — Medium
  9. Auth in GraphQL — Part 2 — Building Apollo — Medium
  10.   

    我没有找到突变与查询的正式定义,就像在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没有任何特定的更新操作类型,无需在之后获取数据。