IndexedDB的一些操作

indexedDB是一個事務型數據庫系統,同時也是基於javascript的面向對象的數據庫,它可以存儲大量結構化數據

首先是打開數據庫

var request=window.indexedDB.open(this.name)
//打開數據庫

request.onsuccess=function(event){ this.db=request.result }
//獲取數據庫實例

第一次創建數據庫時會觸發他的upgradeneeded方法

request.onupgradeneeded = function (event) {
        // 獲取數據庫實例
		var db = request.result;
        // 檢查是否存在指定的表
		if (!db.objectStoreNames.contains(_this.tableName)) {
            // 如果不存在,則創建,並指定一個自增的id作爲查詢依據
			db.createObjectStore(_this.tableName, {
				keyPath: "id",
                autoIncrement: true
			});
		}
	};

獲得數據表實例

LocalDB.prototype.getStore = function () {
	var transaction = this.db.transaction(this.tableName, 'readwrite');
	var objStore = transaction.objectStore(this.tableName);
	return objStore;
}

保存數據,支持添加和修改

LocalDB.prototype.set = function (data, callback) {
	var objStore = this.getStore();
	var request = data.id ? objStore.put(data) : objStore.add(data);
	request.onsuccess = function (event) {
		callback && callback(event.target.result);
	};
}

刪除數據

LocalDB.prototype.remove = function (id) {
	var objStore = this.getStore();
	objStore.delete(id);
}

獲取數據

//獲取一條數據
LocalDB.prototype.get = function (id, callback) {
	var objStore = this.getStore();
	var request = objStore.get(id);
	request.onsuccess = function (event) {
		callback && callback(event.target.result);
	}
}

// 獲取表中所有的數據
LocalDB.prototype.getAll = function (callback) {
	var objStore = this.getStore();
    // 打開數據遊標
	var request = objStore.openCursor();
	request.onsuccess = function (event) {
		var cursor = event.target.result;				
		if (cursor) {
            // 如果遊標存在,執行回調並傳入當前數據行
			callback && callback(cursor.value);
            // 繼續下一行數據
			cursor.continue();
		}
	}
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章