var database = e.target.result;
var version = Number(database.version);
console.log("in onsuccess>>>>>>>>>>>>>>>>>>>>>>>>>> : "+dbName);
console.log(e);
database.close();
var secondRequest = indexedDB.open(dbName, (version+1));
console.log(secondRequest); // <-- error on this line
//console.log(secondRequest.result);
secondRequest.onupgradeneeded = function (e) {
console.log("in onupgradeneeded>>>>>>>>>>>>>>>>>>>>>>>>>>");
console.log(e);
var database = e.target.result;
//database.setVersion(12);
var objectStore = database.createObjectStore(storeName, {
keyPath: 'id'
});
};
secondRequest.onsuccess = function (e) {
console.log("000000000000000000000000000000");
e.target.result.close();
};
secondRequest.onerror = function(e){
console.log("Error ------------------- ");
console.log(e);
}
在上面的控制台中我在
中遇到以下错误console.log(secondRequest);
错误:
IDBOpenDBRequest
error : [Exception: DOMException]
我添加了listner
IDBOpenDBRequest.onerror = function(e){
}
但它不会去那里。如果有人有解决方案,请帮助我。
答案 0 :(得分:1)
虽然你有一些核心概念,但你的代码很难按原样遵循。首先,此e
事件分配未定义:
var database = e.target.result;
数据库open()
在哪里? dbName
来自哪里?
提供更多失败的代码,最好通过jsfiddle,我们会帮助您找到解决方案。
更新:Here's a working example您正在尝试做的事情。
输出 div
:
<div id="idb_version"></div>
<强>代码强>:
var db_name = 'myname',
database_open_request = window.indexedDB.open(db_name);
database_open_request.addEventListener('success', function (e) {
database = e.target.result;
database.close();
var second_database_open_request = window.indexedDB.open(db_name, database.version + 1);
second_database_open_request.addEventListener('upgradeneeded', function (e) {
database = e.target.result;
database.close();
window.document.getElementById("idb_version").innerHTML = database.version;
});
});
如果未指定版本参数,则会在success
回调中获得对最新版本的引用。然后我听一个versionchange
并将版本增加一个。反复运行,您将逐个看到版本增加。