用途:在把 Convex 的 schema 变更推向生产前,先在一份用生产快照播种的预览部署上完整预演,让 schema 推送对现有文档的一致性校验在副本上暴露问题,而不是在生产上失败。
主要能力:该流程组合了 deploy-guard(目标分类与确认)、migrate(先可选后收紧的模式)与 @convex-dev/migrations(分批、可续跑、可空跑的回填)。
使用方式(按资料顺序):1) 前置条件是预览部署需要 Preview Deploy Key(仪表盘 → Project Settings → Deploy Keys → Preview)并导出为 CONVEX_DEPLOY_KEY,属于付费层功能;无预览密钥时可退回到个人 dev 部署上用快照预演。2) 用 npx convex export --path snapshot.zip 只读导出源数据(仅在迁移涉及文件时加 --include-file-storage)。3) 在改动 schema.ts 之前,用变更前代码创建预览:npx convex deploy --preview-create migrate-<slug>,再用 npx convex import snapshot.zip --deployment migrate-<slug> 播种(import 按 --deployment 指定部署名,没有 --preview-name)。4) 在预览上按顺序预演:先把新字段设为可选并 npx convex deploy --preview-name migrate-<slug>,冲突会在此失败;再写 @convex-dev/migrations 回填并运行;最后收紧校验器并再次部署。5) 在预览上验证函数行为与数据形状。6) 只有再次获得明确同意后,才在生产重复同一序列,快照作为回滚产物。7) 预览会自动过期,本地快照需删除且不得提交。
限制:预览部署为付费层功能且约 5 天自动过期;快照含真实数据,属敏感资料,恢复快照会丢失快照之后写入的数据,因此升级窗口要短;回填应通过 @convex-dev/migrations,而非一次性全表 mutation。