用途
该技能用于通过 Supabase 的 REST API 对数据库表执行 CRUD 操作,包括查询(SELECT)、插入(INSERT)、更新(UPDATE)、删除(DELETE)数据,以及调用 RPC 数据库函数。适合在命令行或自动化脚本中直接操作 Supabase 数据库。
主要能力
- SELECT 查询:支持选择全部或指定列、等值/大于/小于/模式匹配/IN/IS NULL 等过滤、排序、限制数量、分页(offset 或 Range 头)、多条件 AND、OR 过滤以及嵌套过滤。
- INSERT 插入:支持插入单行、多行,以及通过
Prefer: resolution=merge-duplicates头实现 Upsert(存在则更新)。 - UPDATE 更新:按过滤条件更新单行或多行。
- DELETE 删除:按过滤条件删除单行或多行。
- RPC 调用:执行存储过程,支持无参数和带参数调用。
- 过滤运算符:提供 eq、neq、gt、gte、lt、lte、like、ilike、is、in、not、or、and 等运算符参考。
- 响应格式化:可配合 jq 美化 JSON、提取字段;通过
Prefer: count=exact头获取总数。 - 常见模式:检查记录是否存在、不存在则创建、批量操作等示例。
- 错误处理:辅助脚本自动处理并显示 HTTP 错误,可通过返回码判断成功与否。
使用方式
需先设置环境变量:
export SUPABASE_URL="https://your-project.supabase.co" export SUPABASE_KEY="your-anon-or-service-role-key"
并 source 共享的 Supabase API 辅助脚本:
source "$(dirname "${BASH_SOURCE[0]}")/../../scripts/supabase-api.sh"
随后可调用 supabase_get、supabase_post、supabase_patch、supabase_delete 等函数,传入 REST 路径与 JSON 数据。例如查询:
supabase_get "/rest/v1/users?select=id,name,email"
插入:
supabase_post "/rest/v1/users" '{"name": "John Doe", "email": "john@example.com", "age": 30}'
更新:
supabase_patch "/rest/v1/users?id=eq.123" '{"name": "Updated Name"}'
删除:
supabase_delete "/rest/v1/users?id=eq.123"
调用 RPC:
supabase_post "/rest/v1/rpc/calculate_total" '{"user_id": 123, "start_date": "2023-01-01", "end_date": "2023-12-31"}'
适用场景
- 在命令行或脚本中快速查询、修改 Supabase 数据库数据。
- 自动化任务中批量插入、更新或删除记录。
- 调用数据库端存储过程完成计算或业务逻辑。
- 需要以编程方式检查记录是否存在并按条件创建。
限制与安全说明
- 需自行提供有效的 SUPABASE_URL 与 SUPABASE_KEY。
- 客户端操作应使用 anon key(遵循行级安全策略 RLS);管理操作可使用 service role key(会绕过 RLS,需谨慎)。
- 应在 Supabase 控制台配置行级安全策略。
- 切勿将密钥提交到版本控制。
- 完整 API 文档见:https://supabase.com/docs/guides/api