indexedDB 是 HTML5 提供的一种本地存储,通常用户保存大量用户数据并要求数据之间有搜索须要的场景,当网络断开的时候,能够作一些离线应用,它比 SQL 方便,不用去写一些特定的语句对数据进行操做,数据格式为 json。web
var indexedDB = window.indexedDB || window.webkitIndexedDB || window.mozIndexedDB || window.msIndexedDB;
var request = indexedDB.open(databasename, version);
request.onerror = function(e){
// 建立失败回调函数
};
request.onsuccess = function(e){
// 建立成功回调函数
};
request.onupgradeneededd = function(e){
// 当数据库改变是回调函数
};
复制代码
注意这里的版本号只能够是整数数据库
request.onupgradeneeded = function(event) {
var db = event.target.result;
var objectStore = db.createObjectStore("name", { keyPath: "id" });
};
复制代码
// 增
addData:function(db,storename,data){
var store = store = db.transaction(storename,'readwrite').objectStore(storename),request;
for(var i = 0 ; i < data.length;i++){
request = store.add(data[i]);
request.onerror = function(){
console.error('add添加数据库中已有该数据')
};
request.onsuccess = function(){
console.log('add添加数据已存入数据库')
};
}
}
复制代码
添加数据,重复添加会报错json
// 删
deleteData:function(db,storename,key){
var store = store = db.transaction(storename,'readwrite').objectStore(storename);
store.delete(key)
console.log('已删除存储空间'+storename+'中'+key+'记录');
}
复制代码
// 改
putData:function(db,storename,data){
var store = store = db.transaction(storename,'readwrite').objectStore(storename),request;
for(var i = 0 ; i < data.length;i++){
request = store.put(data[i]);
request.onerror = function(){
console.error('put添加数据库中已有该数据')
};
request.onsuccess = function(){
console.log('put添加数据已存入数据库')
};
}
}
复制代码
重复添加已经存在的数据会更新原有数据浏览器
// 查
getDataByKey:function(db,storename,key){
var store = db.transaction(storename,'readwrite').objectStore(storename);
var request = store.get(key);
request.onerror = function(){
console.error('getDataByKey error');
};
request.onsuccess = function(e){
var result = e.target.result;
console.log('查找数据成功')
console.log(result);
};
}
复制代码
根据存储空间的键找到对应数据,本例为 id缓存
db.close();
复制代码
掌握了使用步骤以后,咱们来结合它的优、缺点谈谈其使用场景。bash
参考: indexedDB API网络