数据库

pg_graphql:PostgreSQL 的 GraphQL 接口


pg_graphql 是一个Postgres扩展,允许使用GraphQL而非SQL与数据库交互。

该扩展会基于现有SQL模式生成对应的GraphQL模式,并通过SQL函数graphql.resolve(...)暴露出来。这使得任何能连接Postgres的编程语言都可以通过GraphQL查询数据库,而无需额外的服务器、进程或库。

pg_graphql的resolve方法设计用于与PostgREST协同工作(PostgREST是支撑Supabase API的核心工具),因此可以通过RPC调用graphql.resolve函数,安全高效地通过HTTP/S暴露GraphQL API。

有关SQL模式如何映射为GraphQL模式的更多信息,请参阅pg_graphql API文档

启用扩展

  1. 进入Dashboard中的数据库页面
  2. 点击侧边栏中的扩展
  3. 搜索"pg_graphql"并启用该扩展

使用方法

给定一个表

1
2
3
4
5
6
7
8
create table "Blog"( id serial primary key, name text not null, description text);insert into "Blog"(name)values ('My Blog');

反射生成的 GraphQL 模式可以立即查询如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
select graphql.resolve($$ { blogCollection(first: 1) { edges { node { id, name } } } } $$);

返回的 JSON 结果

1
2
3
4
5
6
7
8
9
10
11
12
13
14
{ "data": { "blogCollection": { "edges": [ { "node": { "id": 1 "name": "My Blog" } } ] } }}

请注意,pg_graphql 完全支持模式自省,因此您可以连接任何 GraphQL IDE 或模式检查工具来查看 API 中可用的完整字段和参数集。

API

相关资源