【问题标题】:graphql optimization图形优化
【发布时间】:2019-01-04 20:53:23
【问题描述】:

大家!

是否可以访问节点定义的信息和上下文。我可以在哪里拥有抽象语法树(AST)。我实际上需要它来优化我的对象(即节点)请求。

例如:如果我有下一个 graphql 查询:

query { node(id:'some_id'){ name, surname, friends{ edges node{ { name,
  surname} }}, posts{edges{ node{ id, text} }}}. 

所以在这种情况下,首先我必须为我的人(即节点)进行 SQL 查询,然后我必须向我的人的 SQL 朋友和另一个 SQL 查询询问人的帖子。可能后来所有朋友的帖子。这实际上是非常昂贵的。我很想检查请求中的字段并构建一个 SQL 查询。

如何更好地做到这一点?

谢谢!

【问题讨论】:

    标签: sql graphql relay


    【解决方案1】:

    DataLoader 可以帮助您解决此问题,而无需检查查询。从本质上讲,它可以批量处理昂贵的调用。您编写了一个批处理函数,该函数为每个批处理调用,在此函数中您构建所有单独调用的单个 SQL 查询。很不错!

    从本质上讲,它允许您在解析器中进行简单直接的数据库请求,并且仍然可以获得单个数据库查询的性能优势。希望这有意义吗?

    阅读这里的文档并尝试一下(太棒了)https://github.com/facebook/dataloader

    【讨论】:

      猜你喜欢
      • 2021-11-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-15
      • 2010-10-08
      • 2010-11-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多