SuperAPI AI 工具集

supabase

前端与建站

查看项目

更新于 10-15 21:09

技能介绍

用途:为 Next.js SaaS 项目配置 Supabase,覆盖鉴权、数据库访问、行级安全(RLS)与成本优化。

主要能力:采用双通道数据访问模型。通道 A 为用户作用域,经 @supabase/ssr 走 PostgREST Data API,浏览器与服务端组件均可用,JWT 通过 getClaims() 校验,多租户读写自然遵循 RLS。通道 B 为服务端特权通道,Drizzle 经 postgres.js 连接 Supavisor 连接池,用于迁移、管理任务与计费 webhook。

使用方式:安装 bun add drizzle-orm postgres 与 bun add -d drizzle-kit;在 src/db/index.ts 中创建 postgres 连接并设置 prepare: false(事务池必需);用 @supabase/ssr 创建浏览器与服务端客户端;在 middleware.ts 中调用 supabase.auth.getClaims() 刷新令牌。环境变量包括 NEXT_PUBLIC_SUPABASE_URL、NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY、SUPABASE_SERVICE_ROLE_KEY、DATABASE_URL(事务池 6543)与 DATABASE_URL_MIGRATIONS(会话池 5432)。常用命令:supabase login、supabase link --project-ref $PROJECT_REF、supabase db pull、supabase migration new <name>、supabase db push,以及 drizzle-kit generate、drizzle-kit migrate、drizzle-kit studio。

适用场景:Next.js SaaS 的 Supabase 搭建、Drizzle 连接、SSR 鉴权、Google OAuth、RLS 策略与成本控制。

限制与注意:仅支持 IPv4 的环境(如 Vercel、GitHub Actions)不能使用直连(IPv6),须用连接池;事务池下必须 prepare: false;鉴权用 getClaims() 而非 getSession();service_role 密钥不得暴露给客户端;public 架构所有表须启用 RLS;租户标识应使用 app_metadata 而非 user_metadata。具体收费与价格资料暂未提供。