用途:面向使用 Convex 作为后端的 TypeScript 项目,提供后端开发规范。当编写 Convex 函数(query、mutation、action)、定义 schema 与校验器、实现实时数据获取、设置 cron 或延迟函数、处理文件存储、设计 API 结构时参考;项目未使用 Convex 则跳过。
主要能力与规则分类:函数语法(关键)采用带 args/returns/handler 的新语法;校验器(关键)为参数与返回值提供类型安全校验;schema 设计(高)涉及表定义、索引与系统字段;查询模式(高)强调用索引高效取数;变更模式(中)涉及数据库写入、patch 与 replace;action 模式(中)用于外部 API 调用与 Node.js 运行时;调度(中)支持 cron 与延迟执行;文件存储(低)涉及 blob 与元数据。
必要用法:公共函数从 "./_generated/server" 导入 query、mutation、action;内部函数导入 internalQuery、internalMutation、internalAction。函数引用从 "./_generated/api" 导入 api 或 internal。常用校验器包括 v.string()、v.number()、v.boolean()、v.id("tableName")、v.array()、v.object()、v.optional()、v.union()、v.literal()、v.null()。查询示例:在 schema 中 defineTable({...}).index("by_channel", ["channelId"]),再用 ctx.db.query("messages").withIndex("by_channel", (q) => q.eq("channelId", channelId)).order("desc").take(10)。
关键限制:所有函数必须包含 args 与 returns 校验器;void 返回用 v.null(),不可省略返回校验器;使用 withIndex() 而非 filter(),索引需在 schema 中定义;私有函数用 internalQuery/Mutation/Action;action 不能访问 ctx.db,需改用 runQuery/runMutation;同文件内调用函数时需加类型注解。完整规则与代码示例见 AGENTS.md。