用途:为 Convex 数据库提供模式演进(schema migration)策略,帮助在不停机的前提下安全修改数据结构。
主要能力:新增字段(先设为 optional 再回填)、回填历史数据、删除废弃字段、重命名字段(复制到新字段后移除旧字段)、添加索引、变更字段类型,以及构建可复用的迁移运行器(记录迁移名称、状态、进度与错误)。
使用方式:Convex 没有显式迁移文件或命令,模式变更通过 npx convex dev 即时部署,但已有数据不会自动转换。典型流程是先在 convex/schema.ts 中把新字段声明为 v.optional(...),更新查询与变更代码兼容新旧两种情况,再用 internalMutation 分批分页回填(示例中 BATCH_SIZE = 100,配合 ctx.scheduler.runAfter 调度下一批),回填完成后把字段改为必填。删除字段时先停止使用,再从 schema 移除,可选清理数据。重命名需先加新字段、读取时回退旧字段、回填复制、最后移除旧字段。索引需先加入 schema 并部署后再在查询中使用。
适用场景:Convex 应用迭代中需要演进数据模型、保持零停机部署、需要可追踪迁移进度的团队。
限制:资料未提供具体收费、价格、平台支持范围或性能数据;迁移需自行处理分批、错误与重试,示例代码中的辅助函数(如 generateDefaultAvatar)为演示用途。