【问题标题】:Can I use a GraphQL/Relay query for modifying data without fetch我可以使用 GraphQL/Relay 查询来修改数据而无需获取
【发布时间】:2016-12-05 08:57:01
【问题描述】:

中继突变被定义为“由写入数据存储然后获取任何更改的字段组成的操作。”。诸如日志记录之类的东西呢?我还没有像在 REST POST、GET 和 PUT 协议中那样找到突变与查询的正式定义。我是否正确,当希望修改和返回数据时会使用突变,但如果我只需要更新某些内容,那么标准查询就可以了吗?在某些情况下,我可能会获取数据但更新不需要返回的内容。

【问题讨论】:

    标签: graphql relayjs


    【解决方案1】:

    Relay 突变被定义为“由写入数据存储然后获取任何更改的字段组成的操作。”。诸如日志记录之类的呢?

    如果我正确理解您对 日志记录 的困惑,您想在服务器上记录一些内容,但您的客户端没有任何要更新的内容。如果您想使用 GraphQL 和 Relay 进行日志记录,您应该将此日志记录操作建模为突变。查询实际上是一个只读操作。

    如果 logging 是一个错字,而您实际上是指 login,那么之前有很多关于 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

    我还没有像在 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 没有任何特定的操作类型可以在不获取数据的情况下进行更新。

    【讨论】:

    • 我明白了。是的,它正在记录日志。
    猜你喜欢
    • 2015-11-27
    • 2016-03-03
    • 2021-05-28
    • 2016-10-02
    • 2016-11-30
    • 2019-02-06
    • 1970-01-01
    • 2020-01-20
    • 2022-12-15
    相关资源
    最近更新 更多