// 使用示例: // const db = new IndexedDB('myDatabase', 1, 'myStore'); // await db.open(); // await db.add({ id: 1, name: 'John' }); // const data = await db.get(1); // console.log(data); // await db.delete(1); export default class IndexedDB { constructor(databaseName, databaseVersion, storeName) { this.databaseName = databaseName; this.databaseVersion = databaseVersion; this.storeName = storeName; this.db = null; } open() { return new Promise((resolve, reject) => { const request = indexedDB.open(this.databaseName, this.databaseVersion); request.onerror = (event) => { reject(event.target.error); }; request.onsuccess = (event) => { this.db = event.target.result; resolve(this.db); }; request.onupgradeneeded = (event) => { const db = event.target.result; if (!db.objectStoreNames.contains(this.storeName)) { db.createObjectStore(this.storeName, { keyPath: 'id' }); } }; }); } add(data) { return new Promise((resolve, reject) => { const transaction = this.db.transaction([this.storeName], 'readwrite'); const objectStore = transaction.objectStore(this.storeName); const request = objectStore.add(data); request.onerror = (event) => { reject(event.target.error); }; request.onsuccess = (event) => { resolve(event.target.result); }; }); } get(id) { return new Promise((resolve, reject) => { const transaction = this.db.transaction([this.storeName], 'readonly'); const objectStore = transaction.objectStore(this.storeName); const request = objectStore.get(id); request.onerror = (event) => { reject(event.target.error); }; request.onsuccess = (event) => { resolve(event.target.result); }; }); } getAll() { return new Promise((resolve, reject) => { const transaction = this.db.transaction([this.storeName], 'readonly'); const objectStore = transaction.objectStore(this.storeName); const request = objectStore.getAll(); request.onerror = (event) => { reject(event.target.error); }; request.onsuccess = (event) => { resolve(event.target.result); }; }); } delete(id) { return new Promise((resolve, reject) => { const transaction = this.db.transaction([this.storeName], 'readwrite'); const objectStore = transaction.objectStore(this.storeName); const request = objectStore.delete(id); request.onerror = (event) => { reject(event.target.error); }; request.onsuccess = (event) => { resolve(event.target.result); }; }); } }