SuperAPI AI 工具集

convex-anti-patterns

编程与开发

查看项目

更新于 10-16 02:39

技能介绍

用途:该技能记录 Convex 开发中必须避免的关键错误与代理需遵守的规则,每条模式都曾引发真实生产问题。适用于审查 Convex 代码、调试异常、理解代码为何不按预期工作,以及通过反例学习最佳实践。

主要能力与规则要点:

  1. TypeScript 禁止使用 any,代码库启用 @typescript-eslint/no-explicit-any,使用 any 会导致构建失败;应使用 Doc<"items"> 等具体类型,参数校验避免 v.any()。
  2. Mutation 中禁止 fetch(),Mutation 必须确定性,外部调用应改为调度 Action 处理。
  3. Action 中不能使用 ctx.db,需通过 ctx.runQuery 读取、ctx.runMutation 写入。
  4. 每个函数必须显式声明 returns 校验器并显式返回值。
  5. 查询避免 .filter() 全表扫描,应使用索引 withIndex。
  6. 避免无界 .collect(),应使用 take() 限制数量。
  7. 不要用 .collect().length 计数,可用有界计数或反规范化计数器。
  8. 避免 N+1 查询,可批量获取关联文档。
  9. 避免全局计数器热点,可采用分片或 Workpool 串行化。
  10. 使用 v.int64() 而非已弃用的 v.bigint()。
  11. 返回校验器需包含 _id 与 _creationTime 等系统字段。
  12. 内部逻辑应使用 internalMutation/internalAction,公开函数需鉴权。
  13. 数据一致性操作应放在单个原子 Mutation 中,避免非事务 Action 分步写入。
  14. 避免冗余索引,复合索引可服务前缀查询。
  15. ID 参数应使用 v.id() 而非 v.string()。
  16. 重试需指数退避加抖动,避免固定延迟导致惊群。

使用方式:在审查或调试 Convex 代码时对照上述反模式逐项检查,修正为对应正确写法。

限制:资料未提供安装命令、收费、平台支持或效果数据;具体版本兼容性与完整 API 细节暂未提供。