indexDB TS二次封装
warning:
这篇文章距离上次修改已过191天,其中的内容可能已经有所变动。
以下是一个简单的IndexedDB二次封装的示例,使用TypeScript编写。这个封装提供了打开数据库、创建或访问对象存储空间以及执行简单的CRUD操作的方法。
type DBName = 'myDatabase';
type StoreName = 'myStore';
class IndexedDBManager {
private dbName: DBName;
private storeName: StoreName;
constructor(dbName: DBName, storeName: StoreName) {
this.dbName = dbName;
this.storeName = storeName;
}
// 打开数据库
openDatabase(): IDBOpenDBRequest {
return indexedDB.open(this.dbName);
}
// 创建或访问对象存储空间
createObjectStore(db: IDBDatabase): void {
if (!db.objectStoreNames.contains(this.storeName)) {
const objectStore = db.createObjectStore(this.storeName, { autoIncrement: true });
// 可以在这里定义索引
}
}
// 添加记录
addRecord(value: any): IDBRequest {
return this.openDatabase().onupgradeneeded = (e: IDBVersionChangeEvent) => {
this.createObjectStore(e.target.result);
}.onsuccess = (e: Event) => {
const db = e.target.result;
const transaction = db.transaction(this.storeName, 'readwrite');
const store = transaction.objectStore(this.storeName);
const request = store.add(value);
request.onsuccess = () => console.log('Record added successfully');
request.onerror = (e) => console.log('Failed to add record:', e.target.errorCode);
};
}
// 获取记录
getRecord(key: any): IDBRequest {
return this.openDatabase().onupgradeneeded = (e: IDBVersionChangeEvent) => {
this.createObjectStore(e.target.result);
}.onsuccess = (e: Event) => {
const db = e.target.result;
const transaction = db.transaction(this.storeName, 'readonly');
const store = transaction.objectStore(this.storeName);
const request = store.get(key);
request.onsuccess = (e) => console.log('Record retrieved successfully:', e.target.result);
request.onerror = (e) => console.log('Failed to retrieve record:', e.target.errorCode);
};
}
// 更新记录
updateRecord(key: any, value: any): IDBRequest {
评论已关闭