Google Chrome中的此代码有什么问题
r = webkitIndexedDB.open(db_name,1);
r.onsuccess = success_callback;
r.onerror = error_callback;
r.onupgradeneeded = function(e){
var db = e.currentTarget.result;
db.createObjectStore('os_name',{keyPath:id,autoIncrement:true});
};
它适用于firefox(mozIndexedDB)但不适用于chrome。即使是恐怖也不会被触发。无论如何我得到这个错误
Uncaught Error: NOT_FOUND_ERR: DOM IDBDatabase Exception 3
答案 0 :(得分:4)
onupgradeneeded
功能,而是应该使用setversion
方法在数据库打开时onsuccess
事件开头启动数据库,如下所述:
http://www.html5rocks.com/en/tutorials/indexeddb/todo/#toc-step2
您的代码应如下所示:
r.onsuccess = function(e) {
var v = "1.0";
var db = e.currentTarget.result;
// We can only create Object stores in a setVersion transaction;
if(v!= db.version) {
var setVrequest = db.setVersion(v);
setVrequest.onfailure = error_callback;
setVrequest.onsuccess = function(e) {
var store = db.createObjectStore('os_name',{keyPath:id,autoIncrement:true});
...
};
}
...
}
2013年11月编辑:现在这是一个过时的答案,因为Google Chrome仅支持使用onupgradeneeded
事件升级数据库。