用途:为 Node.js API 项目提供 Express/Hono + Supabase + Drizzle ORM 的完整脚手架范式,核心原则是「Drizzle 负责查询、Supabase 负责鉴权/存储/实时、中间件负责校验」。
主要能力:
- 数据层:用 drizzle-orm/postgres-js 连接 PostgreSQL,schema 定义 profiles 与 posts 表并导出类型;drizzle-kit 负责迁移生成与推送。
- 鉴权:Supabase 匿名客户端与服务角色管理客户端;通过 supabase.auth.getUser(token) 校验 JWT,提供 requireAuth 与 optionalAuth 中间件。
- 路由:auth 路由含 signup/signin/signout/refresh;posts 路由含列表、按用户、单条、创建、更新、删除。
- 校验与错误:Zod schema 校验请求体,AppError 与统一错误处理中间件。
- 存储:multer 内存存储上传头像到 Supabase Storage 并返回公开 URL。
- Hono 备选方案,适合边缘部署。
- 测试:Vitest + Supertest,含测试初始化与数据清理。
使用方式:先安装依赖 npm install express cors helmet dotenv @supabase/supabase-js drizzle-orm postgres zod npm install -D typescript @types/express @types/cors @types/node tsx drizzle-kit 配置 .env 中的 PORT、SUPABASE_URL、SUPABASE_ANON_KEY、SUPABASE_SERVICE_ROLE_KEY、DATABASE_URL,并用 zod 读取环境变量。数据库脚本:npm run db:generate、db:push、db:studio;开发脚本 tsx watch src/index.ts,构建 tsc,启动 node dist/index.js。API 挂载在 /api,含 /health 健康检查。
适用场景:需要 Supabase 鉴权与存储、同时希望以 ORM 做类型安全查询的 Node.js 后端服务。
限制:资料未提供正式授权、价格、性能基准与平台兼容范围;使用服务角色密钥的客户端会绕过 RLS,需自行妥善保管,不要暴露到客户端;postgres 客户端设置 prepare:false 以适配 Supabase 连接池。