Migration.getOriginStorage
功能说明
上一个 web.tossmini.com Origin 和当前 apps.tossmini.com 会一并获取 Origin 的 localStorage、IndexedDB、OPFS 数据。获取到的数据请按应用规则自行迁移或合并。
类型
没有参数。
Migration.getOriginStorage(): Promise<{
previous: OriginStorageDump;
current: OriginStorageDump;
}>;上一个和 当前的结构相同。 上一个其中放的是之前的 web.tossmini.com Origin 的值, 当前其中放的是当前的 apps.tossmini.com Origin 的值。
interface OriginStorageDump {
/** 读取此快照的 Origin。 */
origin: string;
/** localStorage 的所有键和原始字符串值。 */
localStorage: Record<string, string | null>;
/** Origin 中的 IndexedDB 数据库列表。 */
indexedDB: Array<{
/** 数据库名称。 */
name: string;
/** 数据库版本。 */
version: number;
/** 数据库中的对象存储列表。 */
objectStores: Array<{
/** 对象存储名称。 */
name: string;
/** 对象存储的 keyPath。若是 out-of-line 键,则为 null。 */
keyPath: string | string[] | null;
/** 表示是否为自动生成键的对象存储。 */
autoIncrement: boolean;
/** 对象存储中定义的索引列表。 */
indexes: Array<{
name: string;
keyPath: string | string[];
multiEntry: boolean;
unique: boolean;
}>;
/** 存储在对象存储中的所有记录。 */
records: Array<{
/** 从游标中读取的记录键。 */
key: IDBValidKey;
/** 记录所指向的对象存储的主键。 */
primaryKey: IDBValidKey;
/** 已保存的值。使用前需要按应用的类型进行校验。 */
value: unknown;
}>;
}>;
}>;
/** 以 OPFS 根目录为基准的目录和文件列表。 */
opfs: {
/** 相对于根目录的路径。路径前不会带斜杠。 */
directories: string[];
files: Array<{
/** 相对于根目录的文件路径。 */
path: string;
/** 文件的 MIME 类型。未知时可能为空字符串。 */
type: string;
/** 最后修改时间。以 Unix epoch 为基准的毫秒值。 */
lastModified: number;
/** 文件的原始字节。字符串文件可通过 TextDecoder 读取。 */
data: ArrayBuffer;
}>;
};
/** 各存储的读取失败信息。若为空数组,表示三个存储都已读取。 */
errors: Array<{
storage: "localStorage" | "indexedDB" | "opfs";
message: string;
}>;
}OriginStorageDump可直接从包中导入。
如果调用本身失败,Promise 会被 reject。若只有部分存储读取失败,Promise 会 resolve,原因会记录在 previous.errors 或 current.errors中。
示例代码
下面的示例仅在没有读取错误且当前 Origin 中没有值时,才会迁移之前的 localStorage 值。如果两边都有值,则保留当前值。
这有帮助吗?