【问题标题】:GraphQL order of mutation operationsGraphQL 变异操作的顺序
【发布时间】:2020-06-17 23:36:59
【问题描述】:

我正在创建一个有效的突变,但我不确定它是否按照我认为的方式工作。但是,我想知道执行顺序是什么?

  • 异步
  • 从上到下同步
  • 同步随机顺序
  • 别的东西

我想确保在执行插入/更新插入之前从表中删除某些项目。使用以下突变查询字符串,这是否总是会做我想要的,还是会不时工作,因为我认为它是同步的,但实际上它是异步的?

mutation MyMutation(...) {
  update_my_table_1(...) { }

  delete_my_table_2(...) { }

  insert_my_table_2(...) { }
}

【问题讨论】:

    标签: graphql graphql-mutation


    【解决方案1】:

    来自spec:

    如果操作是突变,则操作的结果是在突变根对象类型上执行突变的顶级选择集的结果。这个选择集应该是串行执行的。

    预计突变操作中的顶级字段会对底层数据系统产生副作用。提供的突变的串行执行可确保在这些副作用期间不受竞争条件的影响。

    根突变类型的字段始终按顺序解析。任何其他类型(如查询根类型或任何“嵌套”类型)的顺序字段是left up to the implementation,尽管在大多数(如果不是全部)实现中,这意味着这些字段是并行解析的。

    所以在上面的例子中,insert_my_table_2 在delete_my_table_2 存在之前不会执行,delete_my_table_2 在update_my_table_1 存在之前不会执行。

    【讨论】:

    • 完美!这就是我的想法,但不知道在哪里可以找到相关信息。
    猜你喜欢
    • 2017-05-05
    • 2022-08-24
    • 2018-04-28
    • 2016-02-15
    • 2017-03-18
    • 2011-03-21
    • 2017-11-03
    • 2022-01-05
    • 1970-01-01
    相关资源
    最近更新 更多