我正在创建一个有效的突变,但我不确定它是否按照我认为的方式工作。不过我想知道执行顺序是什么?
- Async
- 从上到下同步
- 同步随机顺序
- 其他的东西
我想确保在执行插入/更新插入之前从表中删除某些项目。使用以下突变查询字符串,这是否总是会执行我想要的操作,或者是否会时不时地工作,因为我假设它是同步的,但实际上它是异步的?
mutation MyMutation(...) {
update_my_table_1(...) { }
delete_my_table_2(...) { }
insert_my_table_2(...) { }
}
来自spec http://spec.graphql.org/June2018/#sec-Mutation:
如果操作是突变,则操作的结果是在突变根对象类型上执行突变的顶级选择集的结果。该选择集应串行执行。
预计突变操作中的顶级字段会对底层数据系统产生副作用。所提供的突变的串行执行可确保在这些副作用期间避免竞争条件。
根突变类型上的字段始终按顺序解析。任意的订单字段other类型(如查询根类型或任何“嵌套”类型)是留待实施 http://spec.graphql.org/June2018/#sec-Normal-and-Serial-Execution,尽管在大多数(如果不是全部)实现中,这意味着字段是并行解析的。
所以在上面的例子中,insert_my_table_2
不会执行直到delete_my_table_2
是,并且delete_my_table_2
不会被执行直到update_my_table_1
is.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)