GraphQL:为什么我们不应该使用“查询”来写数据

斯科菲德

我知道在GraphQL中:Query当您想从服务器读取一些数据时Mutation使用,当您想将数据写回到服务器时使用。

但是我不能转到查询中的解析器并执行写操作。

我不知道为什么我们需要分开读写操作,因此需要进行突变。

丹尼尔·雷登(Daniel Rearden)

规格

GraphQL建模的操作分为三种:

  • 查询–只读访存。
  • 突变–先写后取。
  • 预订–响应数据源事件而获取数据的长期请求。

因为由每个GraphQL服务提供实际的字段解析逻辑,所以显然有可能创建带有副作用和变异的查询,而这些副作用和变异实际上只是只读操作。查询和突变之间的区别主要是基于约定和客户期望的区别-查询旨在成为类似于GET请求“安全”的“安全”操作

不过,这两种操作的执行方式有一个主要区别-查询的选择集可以并行解决,而突变的选择集始终可以串行解决。

所以在像这样的查询中

query {
  foo
  bar
}

foobar会同时解决。另一方面,这里

mutation {
  foo
  bar
}

foo将首先解决,然后解决bar

这是一项重要功能,因为它允许客户端发送相互依赖的多个突变(例如,插入后跟更新)。通常,并行执行字段是一件好事,因为它可以缩短响应时间,但是在此顺序执行可能是理想的功能。

从实际的角度讲,重要的是要记住,客户端也经常根据特定操作的操作类型对应用程序行为做出某些假设。例如,react-apollo假设在安装组件时应该运行查询,而假设突变是由用户操作触发的。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么我们不应该在Java中使用受保护的静态

为什么我们不应该直接使用默认 QoS?

为什么我们不应该使用Spring MVC控制器@Transactional?

为什么我们不应该在py脚本中使用sys.setdefaultencoding(“ utf-8”)?

为什么我们不应该在同一层使用多个激活功能?

为什么我们不应该在 ComponentDidMount 中设置状态

为什么我们不应该直接在ReactJS中修改状态?

为什么我们不应该将int值用于double变量?(OCA考试)

我们不应该使用<noscript>元素吗?

什么时候我们既不应该使用[弱我]也不要使用[无主我]?

为什么我们不应该使用String在Java中存储密码,而可以使用String在C语言中存储密码?

为什么我们不应该检查User对象来检查用户在Symfony2中是否在线

为什么我不应该使用“ inout”而不是“ in”或“ out”?

为什么我不应该使用'kill -9'/ SIGKILL

为什么不应该使用componentWillMount?

在Javascript中的主要函数中的函数声明之后,我们应该还是不应该使用分号?

如果我的数据库列有很多空值,为什么不应该对它使用索引?

为什么在我们尝试获取数据而不更新/提交新数据时,GraphQL为什么仍查询POST请求?

有充分的理由我们不应该始终使用Google API SDK吗?

为什么我的 javascript 中的队列数据结构表现得不应该

为什么我不应该分开alloc和init?

为什么我们应该使用的的Mockito wiremock

为什么我们应该使用RxJs of()函数?

为什么我不应该使用不可变的POJO而不是JavaBean?

为什么我不应该在ARMv6 +的系统内存上使用ioremap?

为什么我不应该使用CDN进行React和Babel?

为什么我不应该为max_connections使用最大值

为什么我不应该在PHP中使用mysql_ *函数?

为什么我不应该使用catch()处理React useEffect API调用中的错误?