Baseのスナップショット
IBaseSnapshot
IBaseSnapshot は、Univer Basesで使用する永続化形式です。テーブル、テーブルの順序、スキーマのバージョン、タイムスタンプ、オプションのリビジョンメタデータを含む、1つの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 だけを保存したり、実行中のモデルのスナップショットを直接変更したりしないでください。
このガイドはいかがですか?