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 或直接修改執行中的模型快照。
你覺得這篇文檔如何?