我知道在GraphQL中:Query
当您想从服务器读取一些数据时Mutation
使用,而当您想将数据写回到服务器时使用。
但是我不能转到查询中的解析器并执行写操作。
我不知道为什么我们需要分开读写操作,因此需要进行突变。
从规格:
GraphQL建模的操作分为三种:
- 查询–只读访存。
- 突变–先写后取。
- 预订–响应数据源事件而获取数据的长期请求。
因为由每个GraphQL服务提供实际的字段解析逻辑,所以显然有可能创建带有副作用和变异的查询,而这些副作用和变异实际上只是只读操作。查询和突变之间的区别主要是基于约定和客户期望的区别-查询旨在成为类似于GET请求“安全”的“安全”操作。
不过,这两种操作的执行方式有一个主要区别-查询的选择集可以并行解决,而突变的选择集始终可以串行解决。
所以在像这样的查询中
query {
foo
bar
}
foo
并bar
会同时解决。另一方面,这里
mutation {
foo
bar
}
foo
将首先解决,然后解决bar
。
这是一项重要功能,因为它允许客户端发送相互依赖的多个突变(例如,插入后跟更新)。通常,并行执行字段是一件好事,因为它可以缩短响应时间,但是在此顺序执行可能是理想的功能。
从实际的角度讲,重要的是要记住,客户端也经常根据特定操作的操作类型对应用程序行为做出某些假设。例如,react-apollo
假设在安装组件时应该运行查询,而假设突变是由用户操作触发的。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句