用途:该技能归纳 Supabase 在生产环境中的常见做法,适用于创建数据库结构、编写迁移、实现行级安全(RLS)策略、pgvector 向量检索和认证等场景。
迁移工作流:用 supabase migration new feature_name 生成带时间戳的迁移文件,文件位于 supabase/migrations/YYYYMMDDHHMMSS_feature_name.sql。迁移中可创建表、索引并启用 RLS。常用命令包括本地应用 supabase db reset、远程应用 supabase db push、查看状态 supabase migration list。
RLS 模式:包含用户隔离(auth.uid() = user_id)、公开读取私有写入、按订阅层级访问(user_subscriptions 中 tier 与 expires_at 判断)、以及以 TO service_role 的绕过策略。
pgvector 与 RAG:通过 CREATE EXTENSION IF NOT EXISTS vector 启用扩展,建立含 embedding VECTOR(1536) 的表并用 ivfflat 与 vector_cosine_ops 建索引,提供 match_documents 函数按余弦距离返回相似内容。
认证:介绍魔法链接登录(supabase.auth.signInWithOtp 与 emailRedirectTo)、会话读取 supabase.auth.getSession,以及后端使用 service role 客户端调用并以 SUPABASE_SERVICE_KEY 绕过 RLS。
常见模式:JSONB 灵活字段、触发器自动更新 updated_at、软删除与对应的 RLS 过滤。
调试:可查询 pg_policies 检查策略,或通过 SET ROLE authenticated 与 SET request.jwt.claim.sub 模拟用户测试,再 RESET ROLE。常见问题包括插入违反 RLS、因 SELECT 策略导致空结果、service role 未生效。
限制:资料未提供支持版本、性能基准、收费与完整安全边界说明。