我们即将开始一个大项目,有几个表格和关系,我们必须公开API来查阅数据。 GraphQL看起来是个不错的主意,我们想用PostgreSQL,我的主要问题是我们应该使用ORM(如wetland)还是只使用查询构建器/帮助器(如knex)。你怎么看?GraphQL + PostgreSQL:需要一个ORM或只是查询生成器?
回答
我正在处理同一个问题。就定义数据模型之间的关系而言,我认为graphql本身就是某种ORM。 ORM的第二部分,在幕后构建SQL查询,当我向前端开发人员提供构建可能非常复杂的graphql查询的自由时,我希望在我的控制之下拥有这些东西。 ORM(广义上讲)的最后一个构造块是数据模型验证。 Graphql已经包含了一些验证规则(即,如果查询对模式有效)。对于更复杂的数据验证,可以使用任何JavaScript对象验证库。
所以,我认为使用ORM与graphql是完全可行的选择,我认为很多开发人员会这样做。但是对于我来说,graphql提供了一个向量,如果设计不正确,它很容易将服务器拆除。为此,您需要知道在执行美丽的graphql查询后没有引人注目的ORM雾的情况下发生了什么:)
我建议您看看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的当前维护者。
- 1. 查询生成器postgresql像MS ACCESS
- 2. 在生成查询时需要帮助
- 3. 在M查询中生成一个列表
- 4. 需要一个MySQL查询
- 5. 需要一个SQL查询
- 6. 需要一个SQL查询
- 7. 需要一个MySQL查询
- 8. 文件加密成N个文件,但是至少只需要解密M个?
- 9. LINQ查询需要按升序或在同一个查询降
- 10. 需要一个PostgreSQL的查询分组和顺序
- 11. PostgreSQL的查询行合并成一个
- 12. 需要帮助在PostgreSQL查询
- 13. 活动记录或查询生成器
- 14. Django的不同()生成查询没有一列(根据需要)
- 15. 需要帮助加盟三个表后生成查询
- 16. 什么是graphql Introspection查询?
- 17. Hibernate在多对一生成m + 1查询
- 18. 是否可以将DQL查询生成器转换为查询生成器?
- 19. 是一个IQueryable查询还是只能查询一个对象?
- 20. 生成一个PC ID(不需要是唯一的+不需要管理员)
- 21. 查询Math.random只生成一定数量的每个所需的数字
- 22. 需要帮助把一个SQL查询到一个ActiveRecord查询
- 23. 需要帮助生成SQL Server查询产生的平均分
- 24. 使用GraphiQL或GraphQL端点生成schema.json
- 25. GraphQL POST查询
- 26. 为了更新Salesforce中的查找字段,我需要一个Apex类还是只需要一个触发器?
- 27. 是否有SolrJ查询生成器?
- 28. 是否有SQLite3查询生成器?
- 29. 我需要提取一个http查询生成的xml结果的值
- 30. 只是需要从一个字符串