angularjs操作indexeddb
angular.module('app')
.service('DBUtil', function ($http,$q) {
var _self = this;
var myDB = {
name : 'db',
version : 1 ,
db : null
};
_self.openDB = function (name, version, stores) {
var d = $q.defer();
var name = version || myDB.name;
var version = version || myDB.version;
var result = window.indexedDB.open(name,version);
result.onerror = function(e){
console.log("Open DB Error!");
d.reject("error");
};
result.onsuccess = function(e){
myDB.db = e.target.result ;
d.resolve("success");
};
result.onupgradeneeded = function(e){
myDB.db = e.target.result ;
if(!myDB.db.objectStoreNames.contains('users')){
myDB.db.createObjectStore('users',{keyPath: "id"});
}
if(!myDB.db.objectStoreNames.contains('infos')){
myDB.db.createObjectStore('infos',{autoIncrement: true});
}
d.resolve("upgradeneeded");
};
return d.promise;
};
_self.get = function (db,storeName,key) {
var d = $q.defer();
db = db || myDB.db;
var transaction = db.transaction(storeName,'readonly');
var store = transaction.objectStore(storeName);
var result = store.get(key);
result.onsuccess = function (e) {
_self.result = e.target.result;
d.resolve();
};
result.onerror = function (e) {
d.reject();
};
return d.promise;
};
_self.put = function (db,storeName,value) {
db = db || myDB.db;
var transaction = db.transaction(storeName,'readwrite');
var store = transaction.objectStore(storeName);
if(value !== null && value !== undefined){
store.put(value);
}
};
_self.remove = function (db,storeName,value) {
db = db || myDB.db;
var transaction = db.transaction(storeName,'readwrite');
var store = transaction.objectStore(storeName);
var result = store.delete(value);
result.onsuccess = function (e) {
console.log(e);
};
result.onerror = function (e) {
console.log(e);
};
};
return _self;
});