@dtinsight/dt-utils
Version:
87 lines (86 loc) • 2.96 kB
TypeScript
/**
* IndexedDB
*
* @deprecated
* @category Storage
* @description
* 这个类为 IndexedDB 提供了一个包装器,IndexedDB 是一个用于客户端存储大量结构化数据(包括文件/二进制对象)的 API。
* 它允许你以结构化格式存储和检索数据,并使用各种方法查询和操作这些数据。
*
* @Methods
* | 方法名 | 描述 | 参数 | 返回值 |
* |------|------|------|--------|
* | `open` | 打开数据库连接 | — | `Promise<IDBDatabase>` |
* | `add` | 添加一个新的键值对到对象存储中 | `key: IDBValidKey` <br> `value: any` | `Promise<void>` |
* | `set` | 更新对象存储中已存在的键值对 | `key: IDBValidKey` <br> `value: any` | `Promise<void>` |
* | `get` | 从对象存储中检索指定键的值 | `key: IDBValidKey` | `Promise<any>` |
* | `delete` | 从对象存储中删除指定键对应的数据 | `key: IDBValidKey` | `Promise<void>` |
* | `clear` | 清空对象存储中的所有数据 | — | `Promise<void>` |
*
* @example
* ```typescript
* import { IndexedDB } from 'dt-utils';
*
* // 初始化数据库
* const db = new IndexedDB('userDB', 1, 'users');
* await db.open();
*
* // 添加数据
* await db.add('user1', { name: 'John', age: 30 });
*
* // 获取数据
* const user = await db.get('user1');
*
* // 更新数据
* await db.set('user1', { name: 'John', age: 31 });
*
* // 删除数据
* await db.delete('user1');
*
* // 清空所有数据
* await db.clear();
* ```
*
* @see {@link https://developer.mozilla.org/en-US/docs/Web/API/IndexedDB_API/Using_IndexedDB | MDN IndexedDB 使用指南}
* @see {@link https://caniuse.com/#feat=indexeddb | 浏览器兼容性}
*/
declare class IndexedDB {
private _db;
private _version;
private _database;
private _storeName;
private _openLog;
/**
* 创建一个新的 IndexedDB 对象
* @param database 数据库名称
* @param version 数据库版本
* @param storeName 对象存储名称
* @param openLog 是否记录 IndexedDB 的变更日志
*/
constructor(database: string, version: number, storeName: string, openLog?: boolean);
private checkBrowserSupport;
/**
* @hidden
* 打开在构造函数中指定的数据库。
* 此方法返回一个 Promise,解析为数据库实例。
*/
open(): Promise<IDBDatabase>;
private createConnection;
private handleUpgrade;
private setupVersionChangeHandler;
private createTransactionStore;
/** @hidden */
add<T>(key: string, value: T): Promise<IDBRequest>;
/** @hidden */
set<T>(key: string, value: T): Promise<IDBRequest>;
/** @hidden */
get<T>(key: string): Promise<T>;
/** @hidden */
delete(key: string): Promise<IDBRequest>;
/** @hidden */
clear(): Promise<IDBRequest>;
private ensureConnection;
private executeStoreOperation;
private log;
}
export default IndexedDB;