GraphQL 是一种 API 查询语言,它允许客户端指定所需的数据结构和内容,这样服务端就可以返还需要的数据。在这篇文章中,我们将介绍如何使用 Hasura 将 PostgreSQL 数据库转换为 GraphQL 服务。有了 Hasura,你不需要编写自己的 GraphQL API,而是可以自动生成并快速构建 GraphQL 后端。
什么是 Hasura?
Hasura 是一个开源的 GraphQL 服务,它能够自动生成 GraphQL 后端,并将 PostgreSQL 数据库转换为 GraphQL API。Hasura 支持实时查询、客户端订阅和分页查询等功能。
使用 Hasura,可以快速搭建一个 GraphQL API,而无需了解 GraphQL 语言、GrpahQL 服务器等知识,更不需要花费大量时间和精力去实现 CRUD API(增删改查 API)。
如何在 Hasura 中配置 PostgreSQL 数据库?
在 Hasura 中配置 PostgreSQL 数据库非常简单。首先,你需要将 Hasura 部署在你的本地环境中或在云平台上,例如 Heroku、DigitalOcean 等。
然后,在 Hasura 控制台中,选择「Data」选项卡,点击「Connect Database」按钮。在弹出窗口中,输入数据库的连接信息,包括数据库的 URL、用户名和密码等。接着,Hasura 将会连接到你的 PostgreSQL 数据库。
如何在 Hasura 中生成 GraphQL API?
在 Hasura 中生成 GraphQL API 很容易。首先,你需要在 Hasura 控制台中选择「Schema」选项卡,点击「Track All」按钮,Hasura 将会自动检测你的 PostgreSQL 数据库中的所有表、视图和关系,并生成对应的 GraphQL 类型和字段。
现在,你可以在 Hasura GraphQL 控制台上执行 GraphQL 查询,并查看返回的数据。例如,这是一个查询所有用户的 GraphQL 查询:
{ users { id name email } }
当你运行这个查询时,Hasura 将会从 PostgreSQL 数据库中检索所有用户的信息,并将数据返回给客户端。
如何在 Hasura 中实现实时查询?
Hasura 支持实时查询,它使用 WebSocket 协议将数据实时传输到客户端。为了启用实时查询,你需要在 Hasura 控制台中选择「Events」选项卡,并定义每个事件需要监听的表、视图和关系。
例如,我们可以在 Hasura 控制台上创建一个监听用户添加事件的触发器:
CREATE TRIGGER user_added AFTER INSERT ON users FOR EACH ROW EXECUTE PROCEDURE notify_user_added();
这个触发器将会在用户添加到数据库中之后发出通知。Hasura 将会监听这个触发器,并在新用户添加到数据库中后,自动将数据推送到客户端。
要订阅实时查询,客户端需要发送一个 WebSocket 请求,并定义一个 GraphQL 查询,以指定需要接收通知的表、视图或关系。
如何在 Hasura 中进行分页查询?
Hasura 支持分页查询,它可以帮助你优化查询性能。要分页查询,你需要在 GraphQL 查询中指定分页参数,例如「limit」和「offset」。
例如,如果你想查询前 10 个用户,你可以发送下面的 GraphQL 查询:
{ users(limit: 10) { id name email } }
如果你想查询接下来的 10 个用户,你可以使用「offset」参数:
{ users(limit: 10, offset: 10) { id name email } }
结论
使用 Hasura,可以将 PostgreSQL 数据库快速转换为 GraphQL API,并实现实时查询、客户端订阅和分页查询等功能。如果你打算使用 GraphQL 开发你的下一个项目,Hasura 是一个不错的选择。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6773ca136d66e0f9aae7a5e7