Apollo 中 Query 和 Mutation 的区别?

Posted

技术标签:

【中文标题】Apollo 中 Query 和 Mutation 的区别?【英文标题】:difference between Query and Mutation in Apollo? 【发布时间】:2018-05-27 03:13:37 【问题描述】:

我们可以同时使用 Query 和 Mutation 向服务器发出一些请求。在这些查询中,我们可以传递一些参数,并且在这两种情况下我们都会从服务器获得一些结果。唯一的一个强制性区别是我们可以像“this.props.mutation”这样从我们的 props 调用突变,但它看起来像一个语法糖,因为我们可以将我们的 HOC 包装在“withApollo”中,我们将收到“query”道具中的方法也是如此。那么这两种请求的主要区别是什么?

【问题讨论】:

【参考方案1】:

严格来说没有区别。

...从技术上讲,可以实现任何查询来导致数据写入。 但是,建立一个约定,任何操作都是有用的 导致写入应该通过突变显式发送。

但是,参考实现确实强制执行以下操作。

虽然查询字段是并行执行的,但突变字段在 系列,一个接一个。

这意味着如果我们同时发送两个 incrementCredits 突变 请求,第一个保证在第二个开始之前完成, 确保我们不会与自己陷入竞争状态。

这两个报价都可以从下面的链接中找到。

http://graphql.org/learn/queries/#mutations

http://graphql.org/learn/queries/#multiple-fields-in-mutations

【讨论】:

以上是关于Apollo 中 Query 和 Mutation 的区别?的主要内容,如果未能解决你的问题,请参考以下文章

Apollo 的 Query 道具的不同实现

Angular Apollo GraphQL watchQuery 与订阅

(Apollo) GraphQL 合并模式

React-Apollo-Hooks 使用Mutation 传递空变量?

在 Apollo React Mutation 组件中自定义变量

是否可以使用 Apollo Server 在服务器端本地执行突变或查询