2017-08-09 61 views

回答

2

我正在处理同一个问题。就定义数据模型之间的关系而言,我认为graphql本身就是某种ORM。 ORM的第二部分,在幕后构建SQL查询,当我向前端开发人员提供构建可能非常复杂的graphql查询的自由时,我希望在我的控制之下拥有这些东西。 ORM(广义上讲)的最后一个构造块是数据模型验证。 Graphql已经包含了一些验证规则(即,如果查询对模式有效)。对于更复杂的数据验证,可以使用任何JavaScript对象验证库。

所以,我认为使用ORM与graphql是完全可行的选择,我认为很多开发人员会这样做。但是对于我来说,graphql提供了一个向量,如果设计不正确,它很容易将服务器拆除。为此,您需要知道在执行美丽的graphql查询后没有引人注目的ORM雾的情况下发生了什么:)

6

我建议您看看PostGraphile(以前称为PostGraphQL) - 它完全是基于插件的解决方案,它通过检查表格,列,关系,功能等自动构建基于PostgreSQL数据库的GraphQL API。它支持GraphQL最佳实践,如分页连接,全局唯一对象标识符和中继突变。它具有许多开箱即用功能,并且还允许通过在SQL数据库中定义计算列,自定义查询和自定义突变或添加插件来轻松扩展。

PostGraphile通过展望查询AST,解决了天真的基于SQL的GraphQL API中常见的N + 1问题。与其生成数百甚至数千个单独的SQL查询来为复杂的GraphQL请求提供服务,PostGraphile将所需的SQL片段编译为仅针对请求的每个根级字段的一个查询。

你可以尝试一下,看看你的想法,只需两个命令;即使你最终不会使用它,或许它可以帮助你找出如何构建GraphQL API

npm install -g postgraphile 
postgraphile -c postgres://user:[email protected]/dbname 

(如果你不使用PostgreSQL中public模式,指定模式名称( s)你想通过使用--schema schema_name1,schema_name2

注意:我是PostGraphile的当前维护者。