浏览器数据库IndexedDB
遇到的一个坑
window.indexedDB.open(‘test’, 1),这段代码必须写在$(function(){})方法里;否则就会报错
本人写的一小段测试代码
var db;
//要等数据库打开成功,db被赋值后,才能取数据,所以要延迟100毫秒
function afterRead(){
setTimeout(function(){ read(); }, 100);
}
function read() {
var transaction = db.transaction(['person']);
var objectStore = transaction.objectStore('person');
var request = objectStore.get(1);
request.onerror = function(event) {
console.log('事务失败');
};
request.onsuccess = function( event) {
if (request.result) {
console.log('Name: ' + request.result.name);
console.log('Age: ' + request.result.age);
console.log('Email: ' + request.result.email);
} else {
console.log('未获得数据记录');
}
};
}
$(function(){
//新建或打开数据库 下面这句代码一定要写在$(function(){})方法里
var request = window.indexedDB.open('test', 1);
request.onerror = function (event) {
console.log('数据库打开报错');
};
request.onsuccess = function (event) {
console.log('数据库打开成功');
console.log(request.result);
if(db){
}else{
db = request.result;
console.log("赋值完成")
}
};
request.onupgradeneeded = function (event) {
console.log("数据库更新中");
db = event.target.result;
createStore();
}
//创建仓库
function createStore(){
var objectStore = db.createObjectStore('person', { keyPath: 'id' });
objectStore.createIndex('name', 'name', { unique: false });
var request1 = objectStore.add({ id: 1, name: '张三', age: 24, email: 'zhangsan@example.com' });
request1.onsuccess = function (event) {
console.log('数据写入成功');
};
request1.onerror = function (event) {
console.log('数据写入失败');
}
}
})
console.log("地方0")