graphQL连接在公共列上

时间:2017-03-16 09:20:50

标签: join graphql graphql-js

我们如何在graphQL中的公共列上进行数据连接。

例如在SQL中:选择t.name和z.address,其中t.id = z.id;

如何通过graphQL查询进行管理。

1 个答案:

答案 0 :(得分:3)

  

这是如何通过GraphQL查询管理的?

简短回答:它不是(托管)。你必须在解析器中写下它。

您的GraphQL架构基本上只是表示节点的类型声明,以及在图表中表示边缘的字段。 GraphQL是查询此图表的语言。在模式的每个边缘,编写一个函数,用于在查询遍历该边时获取数据。此函数称为"解析器",只要它返回有效数据,您就可以在解析器中放入几乎任何代码。这意味着GraphQL完全,绝对与数据库无关。您的解析器负责与您的数据库通信。

因此,当涉及到SQL和连接时,进行查询的关注完全由API开发人员负责。 GraphQL对SQL或连接一无所知,因此这实际上是您必须编写的应用程序的自定义逻辑。事实证明,构建SQL查询来解析GraphQL查询的数据是非常困难的,而不会遇到诸如急切地获取太多数据或者" N + 1"问题

开源社区中的一些工具已经出现,以帮助解决这个问题。以下是我在Node.js空间中推荐的一对:

  • DataLoader - 一种与数据库无关的工具,用于批量查询和缓存单个记录。
  • Join Monster - 用于高效数据检索和查询批处理的SQL定制工具。它会检查每个查询和您的架构,并动态生成SQL查询。

免责声明:我是Join Monster的共同创作者。