【发布时间】:2019-08-13 12:43:52
【问题描述】:
我们正在使用 apollo server 2 构建新的 GraphQL api。我们的大部分数据都保存在 MongoDB 中,我们可以使用 mongoose 轻松访问。但是我们的 mySQL 数据库中存在许多数据点。我们如何在 GraphQL API 中连接多个数据库来连接 mongodb 和 mySQL?
【问题讨论】:
标签: graphql
我们正在使用 apollo server 2 构建新的 GraphQL api。我们的大部分数据都保存在 MongoDB 中,我们可以使用 mongoose 轻松访问。但是我们的 mySQL 数据库中存在许多数据点。我们如何在 GraphQL API 中连接多个数据库来连接 mongodb 和 mySQL?
【问题讨论】:
标签: graphql
Apollo 服务器不关心您使用了多少数据库,因此您应该能够设置尽可能多的数据库连接,只要您的节点进程允许。
您必须定义解析逻辑,可能使用数据加载器,其中一些字段从 SQL 数据库获取数据,而一些字段从 mongoDB 获取数据。
您可能要考虑的另一个策略是为这些数据库创建单独的(微)服务。然后,您的 GraphQL 服务器将从这些服务中获取其数据,并完全放弃数据库处理。
【讨论】:
这是你的图层:
客户端层(浏览器)有 GraphQL 客户端 --> http 服务器层(例如 Apolo) --> GraphQL Server 提供者,该层理解 GraphQL 查询。它包含您的 GrapgQL 解析器。 --> 数据存储。
您需要配置数据库提供程序的位置是 GraphQL Enpoint 所在的位置。
就我而言,我有 Java 背景。该设置将是能够构建 GraphQL 查询的 Javascript 客户端。能够缓存 GraphQL 查询响应的 Http 服务器。与 GraphQL 提供程序一起提供的 Jetty 服务器。然后我的数据源就会在那里配置。
与 Node.js 的结构非常相似。层,构建块是相同的。
【讨论】: