IndexedDB封装
封装(增,删除,查):
var inquiryDB = function (cb) {
var obj = new Object();
obj.name = "imChat";
obj.version = 1;
obj.db = null;
obj.storeName = "inquiry";
obj.addMsg = function (msg) {
var transaction = obj.db.transaction(obj.storeName, 'readwrite');
var store = transaction.objectStore(obj.storeName);
store.add(msg);
}
obj.queryMsg = function (targetId, doctorId, method) {
var transaction = obj.db.transaction(obj.storeName);
var store = transaction.objectStore(obj.storeName);
var request = store.openCursor();
var dataArr = new Array();
request.onsuccess = function (e) {
var cursor = e.target.result;
if (cursor) {
var id = cursor.key;
var obj = cursor.value;
if (obj.targetId == targetId & obj.doctorId == doctorId) {
dataArr.push(obj);
}
cursor.continue();
} else {
method(dataArr);
}
};
}
obj.deleteMsgByKey = function (targetId, doctorId) {
var transaction = obj.db.transaction(obj.storeName, 'readwrite');
var store = transaction.objectStore(obj.storeName);
var request = store.openCursor();
request.onsuccess = function (e) {
var cursor = e.target.result;
if (cursor) {
var id = cursor.key;
var obj = cursor.value;
if (obj.targetId == targetId & obj.doctorId == doctorId) {
store.delete(id);
}
cursor.continue();
}
};
}
obj.addTable = function (result) {
if (!result.objectStoreNames.contains(obj.storeName)) {
result.createObjectStore(obj.storeName, {
autoIncrement: true
});
}
}
obj.openDB = function (cb) {
var version = obj.version || 1;
var request = window.indexedDB.open(obj.name, version);
request.onerror = function (e) {
console.log(e.currentTarget.error.message);
};
request.onsuccess = function (e) {
obj.db = e.target.result;
cb && cb()
};
request.onupgradeneeded = function (e) {
console.log("DB");
obj.addTable(e.target.result);
};
}
obj.openDB(cb);
return obj;
};
function deleteDB(storeName) {
window.indexedDB.deleteDatabase(storeName);
}
使用
var db = inquiryDB(indexDBWrap);
db.queryMsg (targetId, doctorId, function (e) {
.......执行业务
})