修复detail撤回存储数据过大问题
This commit is contained in:
71
src/tool/indexedDB.js
Normal file
71
src/tool/indexedDB.js
Normal file
@@ -0,0 +1,71 @@
|
||||
const KeyValueDB = {
|
||||
dbName: 'kvStorage',
|
||||
storeName: 'kvStore',
|
||||
|
||||
async init() {
|
||||
return new Promise((resolve) => {
|
||||
const request = indexedDB.open(this.dbName, 1);
|
||||
|
||||
request.onupgradeneeded = (e) => {
|
||||
const db = e.target.result;
|
||||
if (!db.objectStoreNames.contains(this.storeName)) {
|
||||
db.createObjectStore(this.storeName);
|
||||
}
|
||||
};
|
||||
|
||||
request.onsuccess = () => resolve(request.result);
|
||||
});
|
||||
},
|
||||
|
||||
// 设置值(类似 localStorage.setItem)
|
||||
async set(key, value) {
|
||||
const db = await this.init();
|
||||
return new Promise((resolve) => {
|
||||
const tx = db.transaction(this.storeName, 'readwrite');
|
||||
tx.objectStore(this.storeName).put(value, key);
|
||||
tx.oncomplete = () => resolve();
|
||||
});
|
||||
},
|
||||
|
||||
// 获取值(类似 localStorage.getItem)
|
||||
async get(key) {
|
||||
const db = await this.init();
|
||||
return new Promise((resolve) => {
|
||||
const tx = db.transaction(this.storeName, 'readonly');
|
||||
const request = tx.objectStore(this.storeName).get(key);
|
||||
request.onsuccess = () => resolve(request.result);
|
||||
});
|
||||
},
|
||||
|
||||
// 删除值
|
||||
async remove(key) {
|
||||
const db = await this.init();
|
||||
return new Promise((resolve) => {
|
||||
const tx = db.transaction(this.storeName, 'readwrite');
|
||||
tx.objectStore(this.storeName).delete(key);
|
||||
tx.oncomplete = () => resolve();
|
||||
});
|
||||
},
|
||||
|
||||
// 清空所有
|
||||
async clear() {
|
||||
const db = await this.init();
|
||||
return new Promise((resolve) => {
|
||||
const tx = db.transaction(this.storeName, 'readwrite');
|
||||
tx.objectStore(this.storeName).clear();
|
||||
tx.oncomplete = () => resolve();
|
||||
});
|
||||
},
|
||||
|
||||
// 获取所有键
|
||||
async keys() {
|
||||
const db = await this.init();
|
||||
return new Promise((resolve) => {
|
||||
const tx = db.transaction(this.storeName, 'readonly');
|
||||
const store = tx.objectStore(this.storeName);
|
||||
const request = store.getAllKeys();
|
||||
request.onsuccess = () => resolve(request.result);
|
||||
});
|
||||
}
|
||||
};
|
||||
export {KeyValueDB}
|
||||
Reference in New Issue
Block a user