Снимок Base
IBaseSnapshot
IBaseSnapshot — это формат хранения данных, который используется в Univer Bases. Он описывает один экземпляр Base, включая таблицы, порядок таблиц, версию схемы, временные метки и необязательные метаданные ревизии.
Свойства
| Свойство | Тип | Описание |
|---|---|---|
| id | string | Уникальный идентификатор экземпляра Base. |
| name | string | Название Base. |
| schemaVersion | number | Версия схемы снимка. |
| tables | Record\<string, ITableSnapshot\> | Таблицы, где ключом служит идентификатор таблицы. |
| tableOrder | string[] | Упорядоченный список идентификаторов таблиц. |
| createdAt | number | Временная метка создания. |
| updatedAt | number | Временная метка обновления. |
| createdBy? | string | Идентификатор создателя. |
| rev? | number | Необязательный номер ревизии, используемый уровнями хранения данных или совместной работы. |
Минимальный снимок
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 вместо непосредственного изменения объекта снимка используйте API Facade.
Сохранение и восстановление
Facade save() включает ресурсы зарегистрированных плагинов, например панели и локальные комментарии. saveToBackend — функция сохранения вашего приложения.
const base = univerAPI.getActiveBase()if (!base) throw new Error('Open a Base first')await saveToBackend(base.save())В новом редакторе зарегистрируйте те же плагины перед univerAPI.createBase(savedSnapshot). Не сохраняйте только tables и не изменяйте снимок работающей модели напрямую.
Насколько полезно это руководство?