2017-03-16 61 views
0

我们如何在graphQL中的公共列上进行数据加入。graphQL加入普通列

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

这是如何由graphQL查询管理的。

回答

1

这是如何由GraphQL查询管理的?

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

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

因此,当涉及到SQL和连接时,关注查询完全是API开发人员的责任。 GraphQL对SQL或连接一无所知,因此这基本上是您必须编写的应用程序的自定义逻辑。事实证明,构建用于解决GraphQL查询数据的SQL查询是非常困难的,而不会遇到像急于获取太多数据或“N + 1”问题那样的问题。

开源社区中的一些工具已经出现,可以帮助解决这个问题。这里有一对夫妇,我会建议在Node.js的空间:

  • DataLoader - 数据库无关的工具,批处理查询和缓存个人记录。
  • Join Monster - 用于高效数据检索和查询批处理的SQL定制工具。它检查每个查询和您的模式并动态生成SQL查询。

声明:我是Join Monster的联合创始人。