Base 快照

IBaseSnapshot

IBaseSnapshot 是 Univer Bases 使用的持久化格式。它描述一个 Base 单元,其中包括表、表顺序、架构版本、时间戳和可选的修订元数据。

属性

属性类型说明
idstringBase 单元的唯一 ID。
namestringBase 名称。
schemaVersionnumber快照架构版本。
tablesRecord\<string, ITableSnapshot\>以表 ID 为键的表。
tableOrderstring[]按顺序排列的表 ID 列表。
createdAtnumber创建时间戳。
updatedAtnumber更新时间戳。
createdBy?string创建者 ID。
rev?number持久化层或协作层使用的可选修订值。

最小快照

TypeScript
const baseSnapshot = {  id: 'base-1',  name: 'Product tracker',  schemaVersion: 1,  tableOrder: ['tasks'],  tables: {    tasks: {      id: 'tasks',      name: 'Tasks',      primaryFieldId: 'title',      fieldOrder: ['title', 'status'],      fields: {        title: { id: 'title', name: 'Title', type: 'text', config: {} },        status: { id: 'status', name: 'Status', type: 'singleSelect', config: {} },      },      recordOrder: ['rec-1'],      records: {        'rec-1': {          id: 'rec-1',          values: { title: 'Write docs', status: 'In progress' },          orderKey: 'a0',          createdAt: Date.now(),          updatedAt: Date.now(),        },      },      views: {},      viewOrder: [],    },  },  createdAt: Date.now(),  updatedAt: Date.now(),}

用途

IBaseSnapshot 主要用于:

  1. 创建 UniverInstanceType.UNIVER_BASE 单元。
  2. 持久化和恢复结构化数据。
  3. 准备供服务器端处理的数据。
  4. 在协作服务与导入/导出服务之间传输数据。

快照对象属于持久化数据。Base 运行后,应优先使用 Facade API,不要直接修改快照对象。

保存和恢复

保存时使用 Facade 的 save(),它会包含已注册插件的资源,例如仪表盘和本地评论。下面的 saveToBackend 是业务保存函数:

TypeScript
const base = univerAPI.getActiveBase()if (!base) throw new Error('Open a Base first')await saveToBackend(base.save())

在新的编辑器实例中,先注册相同的插件,再用 univerAPI.createBase(savedSnapshot) 恢复。不要只保存 tables,也不要直接修改运行中模型的快照。

你觉得这篇文档如何?

© 2026 DreamNum Co., Ltd.