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文档。
启用扩展
- 进入Dashboard中的数据库页面
- 点击侧边栏中的扩展
- 搜索"pg_graphql"并启用该扩展
使用方法
给定一个表
12345678create table "Blog"( id serial primary key, name text not null, description text);insert into "Blog"(name)values ('My Blog');
反射生成的 GraphQL 模式可以立即查询如下:
12345678910111213select graphql.resolve($$ { blogCollection(first: 1) { edges { node { id, name } } } } $$);
返回的 JSON 结果
1234567891011121314{ "data": { "blogCollection": { "edges": [ { "node": { "id": 1 "name": "My Blog" } } ] } }}
请注意,pg_graphql
完全支持模式自省,因此您可以连接任何 GraphQL IDE 或模式检查工具来查看 API 中可用的完整字段和参数集。
API
graphql.resolve
: 用于执行 GraphQL 查询的 SQL 函数。