2012-06-25 2 views
1

, что случилось с этим кодом в Google Chromeне удается открыть базу данных IndexedDB в 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), но не в хроме. даже бездействия не будет срабатывать. в любом случае я получаю эту ошибку

Uncaught Error: NOT_FOUND_ERR: DOM IDBDatabase Exception 3 
+1

deni имеет правильный ответ здесь. обязательно отметьте их как таковые. – buley

ответ

4

onupgradeneeded не поддерживается функция в Google Chrome, вместо этого вы должны использовать метод 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: Это устаревший ответ сейчас, поскольку Google Chrome о nly поддерживает обновление базы данных с помощью события onupgradeneeded.

Смежные вопросы