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 文档。
使用方法
启用扩展
- 跳转到控制台的 数据库 。
- 点击侧栏中的扩展。
- 搜索"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#
- graphql.resolve: 用于执行 GraphQL 查询的 SQL 函数。
资源
- 官方 pg_graphql 文档