Rod*_*eno 3 database postgresql graphql
我们即将开始一个大项目,有几个表和关系,我们必须公开一个API来咨询数据.GraphQL似乎是个好主意,我们希望将它与PostgreSQL一起使用,我的主要问题是我们是应该使用ORM(如湿地)还是仅使用查询构建器/帮助程序(如knex).你怎么看?
Ben*_*jie 19
我建议查看PostGraphile(以前的PostGraphQL) - 它是一个完全基于插件的解决方案,它通过检查表,列,关系,函数等自动构建基于PostgreSQL数据库的GraphQL API.它支持GraphQL最佳实践,如分页连接,全局唯一对象标识符和中继突变.它具有很多开箱即用的功能,并且还可以通过在SQL数据库中定义计算列,自定义查询和自定义突变或添加插件来轻松扩展.
PostGraphile通过展望查询AST解决了在基于SQL的幼稚GraphQL API中常见的N + 1问题.PostGraphile不是生成数百甚至数千个单独的SQL查询来处理复杂的GraphQL请求,而是将所需的SQL片段编译为所请求的每个根级字段的一个查询.
您可以尝试一下,只用两个命令来看看你的想法; 即使你最终没有使用它,也许它可以帮助你弄清楚如何构建你的GraphQL API
npm install -g postgraphile
postgraphile -c postgres://user:pass@host/dbname
Run Code Online (Sandbox Code Playgroud)
(如果您没有public在PostgreSQL中使用模式,请指定要使用的模式名称--schema schema_name1,schema_name2)
注意:我是PostGraphile的当前维护者.
我现在正在处理同样的问题。我认为 graphql 本身就是定义数据模型之间关系的某种 ORM。ORM 的第二部分,即在幕后构建 SQL 查询,是当我为前端开发人员提供构建可能占用大量资源的潜在复杂 graphql 查询的自由时我希望能够控制的部分。ORM(广义上)的最后一个构建块是数据模型验证。Graphql 已经包含了一些验证规则(即查询是否针对模式有效)。对于更复杂的数据验证,可以使用任何 JavaScript 对象验证库。
因此,我认为将 ORM 与 graphql 结合使用是完全可行的选择,并且我认为很多开发人员都会这样做。但对我来说,graphql 提供了一个向量,如果设计不正确,它可以轻松地拆除服务器。为此,您需要知道在没有吸引人的 ORM 雾的情况下执行漂亮的 graphql 查询背后发生了什么:)
| 归档时间: |
|
| 查看次数: |
3419 次 |
| 最近记录: |