UNPKG

ming-demo1

Version:
229 lines (192 loc) 6.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.openDB = openDB; exports.IDB_saveData = IDB_saveData; exports.IDB_deleteOneData = IDB_deleteOneData; exports.IDB_deleteSomeData = IDB_deleteSomeData; exports.IDB_searchData = IDB_searchData; exports.IDB_getData = IDB_getData; exports.IDB_tableClear = IDB_tableClear; var dbName = 'off-lineDB', daVer = 1, db = '', dbData = []; function openDB(dbName, daVer, tables) { return new Promise(function (resolve, reject) { var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB; if (!indexedDB) { console.log("你的浏览器不支持IndexedDB"); } var request = indexedDB.open(dbName, daVer); request.onsuccess = function (e) { db = e.target.result; window.__db = db; console.log('连接数据库成功'); db.onclose = function (e) { console.log('数据库意外关闭'); }; db.onversionchange = function (e) { console.log('数据库版本变化时触发(发生upgradeneeded事件,或调用indexedDB.deleteDatabase())'); }; resolve(true); }; request.onerror = function () { console.log('连接数据库失败'); resolve('连接数据库失败'); }; request.onblocked = function (e) { console.log('上一次的数据库连接还未关闭'); }; request.onupgradeneeded = function (e) { db = e.target.result; tables.forEach(function (name) { if (!db.objectStoreNames.contains(name)) { if (name == 'offlineLogin' || name == 'metaData' || name == 'billNodata') { var store = db.createObjectStore(name, { keyPath: 'attrKey' }); } else { var store = db.createObjectStore(name, { keyPath: 'indexedDB_id', autoIncrement: true }); } } }); }; }); } function IDB_saveData(data, dbTableName) { return new Promise(function (resolve, reject) { var name = dbTableName ? dbTableName : 'save_data'; var tx = db.transaction(name, 'readwrite'); var store = tx.objectStore(name); var req = store.put(data); req.onsuccess = function () { console.log('成功保存id为' + this.result + '的数据'); resolve(true); }; req.onerror = function (e) { console.log('保存失败'); console.log(e.target.result.error); cb.utils.alert('缓存数据失败!', 'error'); reject(e.target.result); }; }); } function IDB_deleteOneData() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return new Promise(function (resolve) { var id = options.id, dbTableName = options.dbTableName; dbTableName || (dbTableName = 'save_data'); var tx = db.transaction(dbTableName, 'readwrite'); var store = tx.objectStore(dbTableName); var req = store["delete"](id); req.onsuccess = function () { resolve('删除成功'); }; req.onerror = function () { resolve('删除失败'); }; }); } function IDB_deleteSomeData() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return new Promise(function (resolve) { var id = options.id, dbTableName = options.dbTableName; dbTableName || (dbTableName = 'save_data'); var tx = db.transaction(dbTableName, 'readwrite'); var store = tx.objectStore(dbTableName); if (Array.isArray.call(null, id) && id.length > 0) { var _loop = function _loop(i, length) { req = store["delete"](id[i]); req.onsuccess = function () { console.log("\u5220\u9664\u591A\u6761\u6570\u636E\u65F6\u5019\uFF0Cid\u4E3A\uFF1A".concat(id[i], "\u6210\u529F")); }; req.onerror = function (e) { console.error("\u5220\u9664\u591A\u6761\u6570\u636E\u65F6\u5019\uFF0Cid\u4E3A\uFF1A".concat(id[i], "\u6570\u636E\u5220\u9664\u65F6\u5019\u51FA\u9519\uFF1B\u9519\u8BEF\u4E3A\uFF1A").concat(e)); }; }; for (var i = 0, length = id.length; i < length; i++) { var req; _loop(i, length); } } tx.oncomplete = function (e) { resolve('删除成功'); }; tx.onerror = function (e) { resolve('删除失败'); console.error('删除多条数据时候tansaction error: ' + e); }; }); } function IDB_searchData() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; var onlyCheck = options.onlyCheck, dbTableName = options.dbTableName; return new Promise(function (resolve, reject) { var name = dbTableName ? dbTableName : 'save_data'; var tx = db.transaction(name, 'readonly'); var store = tx.objectStore(name); var range = IDBKeyRange.lowerBound(1); var req = store.openCursor(range, 'next'); dbData = []; req.onsuccess = function () { var cursor = this.result; if (cursor) { if (onlyCheck) { dbData.push(cursor.value); resolve(dbData); return; } dbData.push(cursor.value); cursor["continue"](); } else { resolve(dbData); } }; req.onerror = function (e) { reject(e.target.result); }; }); } function IDB_getData() { var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; return new Promise(function (resolve, reject) { var key = options.key, dbTableName = options.dbTableName; var tx = db.transaction(dbTableName, 'readonly'); var store = tx.objectStore(dbTableName); var req = store.get(key); req.onsuccess = function (e) { resolve(e.target.result); }; req.onerror = function (e) { reject(e.target.result); }; }); } function IDB_tableClear(dbTableName) { return new Promise(function (resolve, reject) { if (!dbTableName) { resolve(false); return; } var tx = db.transaction(dbTableName, 'readwrite'); var store = tx.objectStore(dbTableName); var req = store.clear(); req.onsuccess = function (e) { resolve("\u6E05\u9664".concat(dbTableName, "\u8868\u5168\u90E8\u6570\u636E\u6210\u529F")); }; req.onerror = function (e) { console.error("\u6E05\u9664".concat(dbTableName, "\u8868\u5168\u90E8\u6570\u636E\u5931\u8D25\uFF01")); resolve(false); }; }); } //# sourceMappingURL=indexedDB.js.map