pg_graphql: 为PostgreSQL提供GraphQL功能

概念

pg_graphql 是一款用于 与数据库进行交互的 PostgreSQL 扩展,它使用的是 GraphQL 而非 SQL 。

该扩展通过现有的 SQL 模式反映出一个 GraphQL 模式,并通过一个 SQL 函数 graphql.resolve(...) 将其公开。这使得任何能够连接到 PostgreSQL 的编程语言都可以通过 GraphQL 查询数据库,而无需额外的服务器、进程或库。

pg_graphql 的解析方法被设计为与 PostgREST 相互操作,PostgREST 是支持 Supabase API 的工具,通过 RPC 调用 graphql.resolve 函数可以安全、高效地通过 HTTP/S 公开 GraphQL API。

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

使用方法

启用扩展

  1. 跳转到控制台的 数据库
  2. 点击侧栏中的扩展
  3. 搜索"pg_graphql"并启用扩展。

创建一个表

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

相应的 GraphQL 模式可以立即进行查询:

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

返回 JSON

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

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

API#

资源