Fabric.js Document Engine

搜索文档

查找页面或章节

EN

存储 API

查看 Markdown

fabricjs-document-engine/storage 里的全部内容,以及适配器约定。

存储适配器 API 分两部分:fabricjs-document-engine/storage 里的内置适配器,以及你自己的适配器要实现的 DocumentStorage 接口。

内置适配器

function createLocalStorage(options?: LocalStorageOptions): ManagedDocumentStorage

The same as createMemoryStorage, backed by localStorage. Also offers listDocuments() and deleteDocument(id).

function createMemoryStorage(): ManagedDocumentStorage

In-memory storage with revisions, listing and versions. Useful for tests and demos.

function createKeyValueStorage(store: KeyValueStore, prefix: string): ManagedDocumentStorage

The same, on any key-value store that has { read, write, remove, keys }.

NameTypeDefaultDescription
prefixstring—Prefix for every key, so several apps can share one origin.
storageStoragelocalStorageAnother Storage object, such as sessionStorage.

内置适配器还提供 listDocuments() 和 deleteDocument(id),并支持版本。

检查适配器

function verifyStorageAdapter(storage: DocumentStorage): Promise<AdapterReport>

Runs the storage contract against your adapter and returns { ok, checks }, so you know it follows the save rules.

每项检查的含义见检查适配器。

DocumentStorage 接口

NameTypeDefaultDescription
loadDocument*(id: string): Promise<unknown>—Returns the stored document, or plain Fabric JSON.
saveDocument*(document: FabricDocument, context: SaveContext): Promise<void | SaveResult>—Stores the document. Throw an error with code: 'SAVE_CONFLICT' when the stored revision differs from expectedRevision. Return { revision } if your backend assigns its own number.
NameTypeDefaultDescription
expectedRevision*number | null—The revision this editor last saved or loaded. null when the user chose to overwrite.
signal*AbortSignal—Aborted when another document is opened. Pass it to fetch.

版本

存储适配器实现下面四个方法,就能支持版本:

NameTypeDefaultDescription
saveVersion*(version: DocumentVersion): Promise<void>—Stores a full copy of the document as a version.
listVersions*(documentId: string): Promise<VersionSummary[]>—Version summaries for a document, newest first.
loadVersion*(documentId: string, versionId: string): Promise<DocumentVersion>—Returns one version.
deleteVersion*(documentId: string, versionId: string): Promise<void>—Deletes one version.

冲突

function createConflictError(documentId: string, expectedRevision: number, actualRevision: number): DocumentEngineError

A SAVE_CONFLICT error for your storage adapter to throw.

这套存储适配器 API 背后的规则,以及完整的 REST 示例,见自定义后端。

存储适配器 API | Fabric.js Document Engine