class IndexedDB{
constructor(dbName, storeName, version){
this.storeName = storeName;
const indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB;
const request = indexedDB.open(dbName, version);
request.onsuccess = e => {
this.db = e.target.result;
console.log('indexDB初始化成功');
};
request.onupgradeneeded = e => {
this.db = e.target.result;
if(!this.db.objectStoreNames.contains(storeName)){
this.store = this.db.createObjectStore(storeName);
}
console.log("数据库创建成功,Version:"+version);
};
request.onerror = e => {console.info('数据库创建失败', e);};
}
get(key, callback){
const transaction = this.db.transaction(this.storeName);
const objectStore = transaction.objectStore(this.storeName);
const request = objectStore.get(key);
request.onerror = e => {console.info('获取失败', e);};
request.onsuccess = e => {callback(e.target.result);};
}
set(key, value){
let oldValue;
this.get(key, function(res){oldValue = res;});
if(oldValue){
console.info('请运用更新方法更新!');
}else{
const transaction = this.db.transaction(this.storeName, 'readwrite');
const objectStore = transaction.objectStore(this.storeName);
const request = objectStore.add(value, key);
request.onerror = e => {console.info('添加失败', e);};
}
}
update(newValue, key){
this.get(key,(oldValue)=>{
if(!oldValue){
console.info('请用set方法设置值');
}else{
const transaction = this.db.transaction(this.storeName, 'readwrite');
const objectStore = transaction.objectStore(this.storeName);
const request = objectStore.put(newValue, key);
request.onerror = e => {console.info('更新失败', e);};
}
});
}
remove(key){
const request = this.db.transaction(this.storeName, 'readwrite')
.objectStore(this.storeName)
.delete(key);
request.onerror = e => {console.info('删除失败', e);};
}
delete(name){
window.indexedDB.deleteDatabase(name);
}
close(){
this.db.close();
}
}
HTML本地存储IndexedDB封装
最新推荐文章于 2024-09-09 09:11:03 发布