Base 快照
IBaseSnapshot
IBaseSnapshot 是 Univer Bases 使用的持久化格式。它描述一个 Base 单元,其中包括表、表顺序、架构版本、时间戳和可选的修订元数据。
属性
| 属性 | 类型 | 说明 |
|---|---|---|
| id | string | Base 单元的唯一 ID。 |
| name | string | Base 名称。 |
| schemaVersion | number | 快照架构版本。 |
| tables | Record\<string, ITableSnapshot\> | 以表 ID 为键的表。 |
| tableOrder | string[] | 按顺序排列的表 ID 列表。 |
| createdAt | number | 创建时间戳。 |
| updatedAt | number | 更新时间戳。 |
| 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 主要用于:
- 创建
UniverInstanceType.UNIVER_BASE单元。 - 持久化和恢复结构化数据。
- 准备供服务器端处理的数据。
- 在协作服务与导入/导出服务之间传输数据。
快照对象属于持久化数据。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,也不要直接修改运行中模型的快照。
你觉得这篇文档如何?