确保某个graphQL解析器最后运行

时间:2018-02-21 22:36:16

标签: javascript node.js graphql

是否有办法确保在解决过程中某个解析器总是最后运行?

我的特殊用例是,我希望有选择地向客户端返回一些关于运行的查询的信息 - 这些信息仅在所有其他解析器运行后才可用,这取决于用户查询的内容。

让我们说我的根解析器看起来像这样:

{    
  myQuery(args, context, info) {
    return this.dataLayer.load();
  }

  // This resolver must always be run last
  queryInfo(args, context, info) {
    return this.dataLayer.queryInfo();
  }
}

如何始终确保queryInfo()最后一次运行?

考虑的方法:

  • queryInfo()中的数据包含在myQuery()返回的数据中。在这种情况下,queryInfo返回的数据并不严格属于myQuery,因此它在语义上不太有吸引力。
  • dataLayer添加特殊请求跟踪代码。有一些时间上的弱点,也比它的价值更复杂。如果这是我们没有的唯一方式:)。
  • 在GraphQL完成后手动调整已解析的数据。有效地绕过了GraphQL中一个非常有用的功能,而不是。

0 个答案:

没有答案