PostGraphile是什么?

PostGraphile是一个中间件,可以从PostgreSQL的模式构建GraphQL API。

PostGraphile的好处是减少工作量。

如果你已经在使用PostgreSQL数据库,那么只需要部署PostGraphile,就能够获得GraphQL的API。如果按照一般的开发方法来创建GraphQL API,就需要使用Apollo Server等工具来编写与数据库交互的代码,这需要开发人员自己来实现。而使用PostGraphile可以大大减少后端编程的工作量,节省开发时间。

PostGraphile的特点

从PostgreSQL的模式中自动生成GraphQL API

PostGraphile会自动从PostgreSQL架构生成GraphQL API,因此不需要对数据库架构和GraphQL架构进行双重管理,省去了这一繁琐步骤。

由於自動識別表關聯,因此在GraphQL中,我們可以輕鬆地用一個GQL查詢來查詢關聯數據,這也是GraphQL的一個亮點之一。

GraphQL的CRUD修改也将自动生成。另外,如果想要创建一个执行特殊处理的修改操作,可以先定义PostgreSQL存储过程,然后将其转换为GraphQL的修改操作。

当数据库模式发生更改时,GraphQL API也会自动跟随新的模式进行更新。

开源

PostGraphile是一个开源项目,任何人都可以免费使用。没有云供应商锁定的风险。你可以自己选择托管PostGraphile的服务器。

为了避免N+1问题,使用先读并解决之。

使用PostgreSQL作为后端的GraphQL经常会出现N+1问题。为了避免这个问题,可以使用DataLoader对请求进行批量处理,但是DataLoader并不总是最佳的方法。在PostGraphile中也可以使用DataLoader,但是PostGraphile还提供了预取功能,以生成更优化的SQL。

PostGraphile的性能不断改进,比Prisma快得多。

使用PostgreSQL的角色授权和行级安全来进行认可。

除了PostGraphile之外,构建GraphQL API的后端中间件还包括Hasura等选项。它们与PostGraphile的区别在于它们直接使用了PostgreSQL的授权功能作为授权系统。因此,您不需要学习中间件特有的ACL来进行授权。只需要学习传统的基于角色的授权(grant)和行级安全性,这也是一项可以应用于数据库管理技能的技能,这样您就可以避免学习成为一种浪费。

原生地以中文重新诠释GraphQL的订阅功能

在像聊天应用程序和Google文档这样的应用程序中,需要实时接收数据库更改事件。为了满足这种实时要求,GraphQL提供了一个订阅功能。PostGraphile支持GraphQL的订阅。它使用了PostgreSQL的LISTEN/NOTIFY来实现。

启动方法很简单。

PostGraphile以NPM包的形式提供。因此,即使没有Docker等环境,安装也很简单,可以启动PostGraphile。只需安装NPM,就可以通过以下一行命令启动:

npx postgraphile -c 'postgres://user:pass@localhost/mydb' --watch --enhance-graphiql --dynamic-json

当然可以在Docker上启动。

通过插件进行扩展

PostGraphile拥有插件机制,您可以根据需要向Graphile Engine添加功能。

继续

广告
将在 10 秒后关闭
bannerAds