我在主机IP上创建了一个mySQL数据库,但现在希望使用GraphQL从前端更容易地进行查询 . 我已经知道如何从头开始设置GraphQL服务器,但不确定如何访问后端预先存在的表,以及在何处定义架构以使用它们 . 我如何从GraphQL服务器连接到数据库?
Prisma是我考虑过的一个选项,但该服务不允许连接到具有预先存在数据的mySQL数据库 .
谢谢您的帮助!
如果您想要一种相对简单/廉价的方式来公开整个数据库的CRUD操作,Prisma和其他ORM是一个不错的选择 .
如果您只需要公开数据的特定方面或只需要快速开始迭代,则可以在服务器级别定义GraphQL API模式,并根据需要编写连接到数据库的解析器 . 您的架构不需要反映整个数据库,只需要反映您要向客户端公开的数据 .
根据我使用GraphQL API的经验,我发现手动编写查询模式并根据需要创建解析器以便为较小的应用程序维护客户端更快,更容易维护 .
您可以使用像https://github.com/mysqljs/mysql这样的SQL客户端来连接数据库 . 然后,为模式编写的解析器将在数据库中查询为客户端请求提供服务所需的任何数据,即使它跨越多个表 .
GraphQL规范学习网站graphql.org对这个过程有很好的描述https://graphql.org/learn/execution/#root-fields-resolvers
您可以尝试一种名为SwitchQL的新开源工具(github.com/SwitchQL/SwitchQL) . 我一直在研究这个项目 .
您传递了连接字符串,它返回在现有数据库之上运行graphql server所需的一切 . 它还返回符合Apollo标准的客户端变异和查询 .
我们目前只支持Postgres . 如果您最终尝试了,请告诉我您的想法!
2 回答
如果您想要一种相对简单/廉价的方式来公开整个数据库的CRUD操作,Prisma和其他ORM是一个不错的选择 .
如果您只需要公开数据的特定方面或只需要快速开始迭代,则可以在服务器级别定义GraphQL API模式,并根据需要编写连接到数据库的解析器 . 您的架构不需要反映整个数据库,只需要反映您要向客户端公开的数据 .
根据我使用GraphQL API的经验,我发现手动编写查询模式并根据需要创建解析器以便为较小的应用程序维护客户端更快,更容易维护 .
您可以使用像https://github.com/mysqljs/mysql这样的SQL客户端来连接数据库 . 然后,为模式编写的解析器将在数据库中查询为客户端请求提供服务所需的任何数据,即使它跨越多个表 .
GraphQL规范学习网站graphql.org对这个过程有很好的描述https://graphql.org/learn/execution/#root-fields-resolvers
您可以尝试一种名为SwitchQL的新开源工具(github.com/SwitchQL/SwitchQL) . 我一直在研究这个项目 .
您传递了连接字符串,它返回在现有数据库之上运行graphql server所需的一切 . 它还返回符合Apollo标准的客户端变异和查询 .
我们目前只支持Postgres . 如果您最终尝试了,请告诉我您的想法!