indexDB个人使用体会

53 阅读1分钟
var KUDB = {
	db:null,
	// 数据库存在时打开数据库,无数据库时创建数据库
	open:function(){
		/**
		 * 打开或创建数据库
		 * KU 数据库名称		 * 2025 版本号
		 * **/
		var openRes = window.indexedDB.open('KU',2025);		// 第一次创建时执行的回调
		openRes.onupgradeneeded = function(e){
			KUDB.db = e.target.result;
			var storeNames = KUDB.db.objectStoreNames;
		// 创建MODE信息表    		if( !storeNames.contains('MODE') ){
    			KUDB.db.createObjectStore('MODE',{
                    keyPath:"ID",
                    autoIncrement:true
                })
    		}
    		// 创建FONT信息表    		if( !storeNames.contains('FONT') ){
    			KUDB.db.createObjectStore('FONT',{
                    keyPath:"ID",
                    autoIncrement:true
                })
    		}
		}
		// 数据库打开成功
		openRes.onsuccess = function(e){
			KUDB.db = e.target.result;
			// console.log('indexDB数据库已打开')
			// 获取MODE数据
			KUDB.getAll('MODE',function(res){
				// console.log(res)
			})
			// 获取FONT数据
			KUDB.getAll('FONT',function(res){
				// console.log(res)
			})
		}
		// 数据库打开失败
		openRes.onerror = function(e){
			console.log('打开失败')
		}
	},
	/**
	 * 在表中新增数据
	 * storeName 对应的表名本文中是 'FONT'或者'MODE'
	 * data 对应的数据,此数据中需包含定义的键值
	 * **/
	add:function(storeName,data,callback){
		var res = KUDB.db.transaction([storeName],'readwrite').objectStore(storeName).add(data);
		// 添加成功
		res.onsuccess = function(e) {
	      	callback({type:true,value:null})
	    }
	    // 添加失败
	    res.onerror = function(e) {
	      	callback({type:false,value:null})
		}
	},
	// 根据键值查询数据
	get:function(storeName,key,callback){
		// 根据键值获取结果
		var res = KUDB.db.transaction([storeName]).objectStore(storeName).get(key);
		// 获取成功
		res.onsuccess = function(e) {
	      	callback({type:true,value:res.result})
	    }
	    // 获取失败
	    res.onerror = function(e) {
	      	callback({type:false,value:res.result})
		}
	},
	// 获取当前表下的所有数据
	getAll:function(storeName,callback){
		var res = KUDB.db.transaction([storeName]).objectStore(storeName).getAll();
		// 获取成功
		res.onsuccess = function(e) {
	      	callback({type:true,value:res.result})
	    }
	    // 获取失败
	    res.onerror = function(e) {
	      	callback({type:false,value:res.result})
		}
	},
	// 修改数据
	mod:function(storeName,data,callback){
		var res = KUDB.db.transaction([storeName], 'readwrite').objectStore(storeName).put(data);
		// 数据更新成功
		res.onsuccess = function(e) {
	      	callback({type:true,value:null})
	    }
	    // 数据更新失败
	    res.onerror = function(e) {
	      	callback({type:false,value:null})
		}
	},
	// 根据键值删除数据
	del:function(storeName,key,callback){
		var res = KUDB.db.transaction([storeName], 'readwrite').objectStore(storeName).delete(key)
		// 删除成功
		res.onsuccess = function(e) {
	      	callback({type:true,value:null})
	    }
	    // 删除失败
	    res.onerror = function(e) {
	      	callback({type:false,value:null})
		}
	},
	// 删除当前表里的所有数据
	delAll:function(storeName,callback){
		var res = KUDB.db.transaction([storeName], 'readwrite').objectStore(storeName).clear();
		// 删除成功
		res.onsuccess = function(e) {
	      	callback({type:true,value:null})
	    }
	    // 删除失败
	    res.onerror = function(e) {
	      	callback({type:false,value:null})
		}
	}
}