用途:为 Convex 后端提供健壮、安全、高性能且成本可控的开发规范,适用于构建 Convex 后端、优化查询等场景。
核心原则:通过 convex/model/ 模式实现深模块,大部分逻辑用纯 TypeScript 编写,query/mutation 包装层保持轻薄。目录结构为 convex/_generated/(必须提交到 git)、convex/model/(业务逻辑,可测试可复用)、users.ts(公开 API 薄包装)、schema.ts。
关键规则:始终提交 convex/_generated/,这是类型检查、CI/CD 与团队协作所需;对查询字段建索引,用 .withIndex() 而非 .filter();多字段过滤用复合索引,如查询 userId + status 时建 ["userId", "status"] 索引,在索引层过滤而非取回后过滤;所有面向用户的查询都要分页,禁止无界 .collect();只信任 ctx.auth,绝不使用用户提供的鉴权数据。
快速参考:响应式读取数据用 query;写入数据库用 mutation;调用外部 API、向量搜索用 action;定时任务用 internalMutation / internalAction。
反模式扫描:运行 scripts/anti_patterns_scanner.py ./convex 检测常见问题。
详细参考文档包括:cost-mitigation.md(带宽优化、索引、分页)、embeddings-vectors.md(向量搜索模式、共置决策)、query-performance.md(复合索引、查询分段、缓存)、security-access.md(鉴权模式、RLS、RBAC、convex-helpers)、schema-migrations.md(Expand/Contract 模式、环境管理)、architectural-patterns.md(文件组织、状态机、命名)。
理念:成本优先,带宽常是最大成本,积极建索引、全部分页;安全优先,绝不信任客户端输入,始终使用 ctx.auth;响应式是优势,用 useQuery 实现实时更新,不要用一次性 fetch 放弃它;端到端类型安全,利用 Convex 从数据库到 UI 的完整类型链。
限制:资料未提供具体收费、价格、平台支持范围及安装命令等信息。