Graphql嵌套查询非常慢

时间:2017-10-27 15:53:20

标签: graphql express-graphql

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

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

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

响应时间缩短为800毫秒。

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

有没有其他方法可以解决这个问题?

1 个答案:

答案 0 :(得分:0)

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

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

只需调用获取数据的条件,如下所示:

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