概念

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 文档

使用方法

启用扩展

创建一个表

  create table "Blog"(
  id serial primary key,
  name text not null,
  description text,
);

insert into "Blog"(name)
values ('My Blog');
  

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

  select
  graphql.resolve($$
    {
      blogCollection(first: 1) {
        edges {
          node {
            id,
            name
          }
        }
      }
    }
  $$);
  

返回 JSON

  {
  "data": {
    "blogCollection": {
      "edges": [
        {
          "node": {
            "id": 1
            "name": "My Blog"
          }
        }
      ]
    }
  }
}
  

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

API

资源