indexedDB 增删改查
/** * 打开数据库 */ export function openDB() { return new Promise((resolve, reject) => { let indexedDB = window.indexedDB || window.webkitindexedDB; let request = indexedDB.open(conf.name); request.onerror = function (e) { console.error(e.currentTarget.error.message); reject(false); }; request.onsuccess = function (e) { window.INDEXEDDB_DB_RET = e.target.result; console.log('成功建立并打开数据库:' + conf.name + ' version' + conf.version); resolve(true); }; request.onupgradeneeded = function (e) { let db = e.target.result; let transaction = e.target.transaction; for (let key in conf.ojstore) { if (!db.objectStoreNames.contains(key)) { //没有该对象空间时创建该对象空间 db.createObjectStore(key, conf.ojstore[key]); console.log('成功建立对象存储空间:' + key); } } } window.INDEXEDDB_DB = indexedDB; }); } /** * 删除数据库 */ export function deleteDB(dbname) { let self = this; INDEXEDDB_DB.deleteDatabase(dbname); console.log(dbname + '数据库已删除') } //关闭数据库 export function closeDB() { INDEXEDDB_DB_RET.close(); console.log('数据库已关闭') } //添加数据,重复添加会报错 export function addData(storename, data, callback) { let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename); for (let i = 0; i < data.length; i++) { let request = store.add(data[i]); request.onerror = function () { console.error('add添加数据库中已有该数据') }; request.onsuccess = function () { console.log('add添加数据已存入数据库') callback(); }; } } // 添加数据,重复添加会更新原有数据 export function putData(storename, data) { console.log(data) let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename); for (let i = 0; i < data.length; i++) { let request = store.put(data[i]); request.onerror = function () { console.error('put添加数据库中已有该数据') }; request.onsuccess = function () { console.log('put添加数据已存入数据库') }; } } //根据存储空间的键找到对应数据 export function getDataByKey(storename, key, callback) { let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename); let request = store.get(key); request.onerror = function () { console.error('getDataByKey error'); }; request.onsuccess = function (e) { let result = e.target.result; console.log('查找数据成功') console.log(result); $(document).off('event_getDataByKey').on('event_getDataByKey', result); if (callback) { callback(result); } }; } // 获取全部数据 ,根据 storename export function getAllData(storename, callback) { let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename); let request = store.openCursor(); let data = []; request.onerror = function () { console.error('getDataByKey error'); }; request.onsuccess = function (e) { let result = e.target.result; if (result && result !== null) { data.push(result.value); result.continue(); } else { if (callback) { console.log('全部查找数据成功') callback(data); } } }; } //删除某一条记录 export function deleteData(storename, key) { let store = store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename); store.delete(key) console.log('已删除存储空间' + storename + '中' + key + '记录'); } //删除存储空间全部记录 export function clearData(storename) { let store = INDEXEDDB_DB_RET.transaction(storename, 'readwrite').objectStore(storename); store.clear(); console.log('已删除存储空间' + storename + '全部记录'); }
请爱好前端技术的朋友,联系我,有问题大家一起讨论