本页
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 文档。
使用方法
启用扩展
创建一个表
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
- graphql.resolve: 用于执行 GraphQL 查询的 SQL 函数。
资源
- 官方 pg_graphql 文档