Graphql 嵌套查询非常慢

Graphql nested query is extremely slow

我们项目基于REST的时候,有200ms的响应时间~ 更改项目时使用 GraphQL。

因为每个节点都在尝试解析,并且在解析之后,它们的子实体也在解析。 导致极高的延迟,响应时间为 - 11 秒!

我所做的是尝试提取所有需要的信息,包括所有子实体,并从查询解析器中解析这个巨大的对象。

响应时间减少到 800 毫秒。

但是,子实体的解析器仍在发生! (我不得不为这个测试关闭它们)。 在某些情况下如何关闭它们?

还有其他方法可以解决吗?

听起来您可能只想在父对象上的 属性 未定义时获取每个字段的关联数据。所以,如果你的解析器看起来像这样:

foos ({ id }, args, context) {
  return getFoos(id)
}

只需将获取数据的调用设置为有条件的,如下所示:

foos ({ id, foos }, args, context) {
  return foos ? foos : getFoos(id)
}