name: supabase-usage description: 当用户询问“查询Supabase”、“列出Supabase表”、“获取Supabase模式”、“搜索Supabase记录”、“检查Supabase数据库”、“Supabase认证”、“Supabase身份验证”、“RLS策略”、“行级安全”、“Supabase外键”、“表关系”、“Supabase连接”、“Supabase过滤”、“Supabase分页”,或需要指导Supabase数据库模式、认证流程、RLS策略或查询最佳实践时,应使用此技能。
Supabase数据库模式
处理Supabase数据库的模式,包括认证、行级安全、表关系和查询最佳实践。
概述
- MCP工具: 查询和探索数据库结构
- 认证: 用户管理、会话、认证表
- 行级安全: 数据访问控制的策略模式
- 表关系: 外键、连接、嵌套查询
- 查询模式: 过滤、分页、性能
MCP工具
用于数据库探索的可用工具:
mcp__supabase__list_tables- 列出数据库中的所有表mcp__supabase__get_table_schema- 获取特定表的模式mcp__supabase__execute_sql- 运行只读SQL查询
工作流程:
- 使用
list_tables了解数据库结构 - 使用
get_table_schema检查列和类型 - 使用
execute_sql进行自定义查询(只读)
最佳实践
做
- ✓ 在所有公共表上启用RLS
- ✓ 在RLS策略中使用
(select auth.uid())以提高性能 - ✓ 在RLS检查的列上添加索引
- ✓ 在策略中指定角色
TO authenticated - ✓ 对外键使用
on delete cascade到 auth.users - ✓ 对大数据集使用基于游标的分页
- ✓ 只选择需要的列:
.select('id, name')而不是.select('*')
不做
- ✗ 存储敏感数据时不使用RLS
- ✗ 直接在策略中使用
auth.uid()(使用(select auth.uid())) - ✗ 创建策略时不指定角色
- ✗ 忘记在频繁过滤的列上添加索引
- ✗ 对深层页面(>1000行)使用偏移分页
- ✗ 通过API直接暴露 auth.users(使用公共配置文件表)
快速参考
常见过滤器
| 过滤器 | JavaScript | Python |
|---|---|---|
| 等于 | .eq('col', val) |
.eq("col", val) |
| 不等于 | .neq('col', val) |
.neq("col", val) |
| 大于 | .gt('col', val) |
.gt("col", val) |
| 大于或等于 | .gte('col', val) |
.gte("col", val) |
| 小于 | .lt('col', val) |
.lt("col", val) |
| 小于或等于 | .lte('col', val) |
.lte("col", val) |
| 模式匹配 | .ilike('col', '%val%') |
.ilike("col", "%val%") |
| 在列表中 | .in('col', [a,b]) |
.in_("col", [a,b]) |
| 为空 | .is('col', null) |
.is_("col", "null") |
| 或 | .or('a.eq.1,b.eq.2') |
.or_("a.eq.1,b.eq.2") |
认证表快速参考
| 表 | 关键列 |
|---|---|
auth.users |
id, email, phone, created_at, last_sign_in_at, raw_user_meta_data |
auth.sessions |
id, user_id, created_at, updated_at |
auth.identities |
id, user_id, provider, identity_data |
RLS策略模板
create policy "策略名称" on 表名
to authenticated -- 或 anon, 或特定角色
for select -- select, insert, update, delete, 或 all
using ( (select auth.uid()) = user_id )
with check ( (select auth.uid()) = user_id ); -- 用于 insert/update
附加资源
有关详细模式和代码示例,请参考:
references/auth.md- 使用JS/Python SDK进行认证,用户配置文件references/rls.md- 行级安全策略和性能提示references/relationships.md- 表关系和嵌套查询references/query-patterns.md- 过滤、分页、计数、索引