概览
选择存储类型,了解资源关联、数据共享与通用错误。
lexmount:storage 提供结构化数据库、文件存储和字符串键值存储。数据独立于 JavaScript 执行环境保留,关联同一资源的实例可以共享已提交数据。
- IndexedDB:结构化记录、索引、游标和事务。
- ObjectStorage:文件、二进制对象、元数据和流式下载。
- KVStorage:字符串键值、过期时间和前缀列表。
import { IndexedDB, ObjectStorage, KVStorage } from 'lexmount:storage';
console.log(await IndexedDB.databases());
const uploads = await ObjectStorage.open('uploads');
const cache = await KVStorage.open('cache');
await cache.put('ready', 'true');资源与关联
先在存储管理创建资源,再在已停止实例的「存储」Tab 关联,步骤见快速开始。代码只能列出或打开已关联资源,open() 不会创建资源。
资源按项目隔离,可关联多个实例;实例也可关联多个资源。名称在同一项目、同一存储类型内唯一,原样保留,最多 1024 UTF-8 字节,不能全为空白、含 NUL 或无效 Unicode。后端由平台配置,无需提供数据库连接串或对象存储凭据,业务环境变量不能选择或覆盖后端。
关联变更要求实例完全停止、清理完成且没有待执行操作,每批最多原子关联 100 个资源。停止、重跑、删除实例或解除关联均保留资源和数据;删除实例仅移除其关联。删除资源前须解除全部关联。对象资源删除失败可能已清除部分文件,等待删除的资源不可访问或重新关联,可再次删除以继续清理。
StorageError
对象存储与 KV 存储失败时会拒绝并抛出导出的 StorageError extends Error,含只读 code: string、status: number 和 requestId: string;message 为错误描述。status 为 0 时没有 HTTP 状态,requestId 在不可用时为空字符串。
构造接口为 new StorageError(message, options?):message 为字符串;可选 options 包含 code?: string(默认 StorageUnavailable)、status?: number(默认 0)和 requestId?: string(默认空字符串),返回 StorageError 对象。通常直接捕获存储操作产生的错误即可。
| code | 含义 |
|---|---|
StorageNotFound | 资源不存在或未关联 |
StorageUnavailable | 后端未配置或不可用 |
StorageSelectionRequired | 资源名称存在歧义 |
非法参数也可能抛出 TypeError 或 RangeError。IndexedDB 使用请求 error、事务 abort 及 DOMException 的错误模型,见请求与事件。
类型声明见 storage.d.ts;其中引用的 IndexedDB 基础类型来自 WebWorker 标准库,各存储接口的运行时限制仍然适用。
