Ich entwickle eine Cordova App für iOS mit einer IndexedDB Datenbank im Hintergrund. Hier ist mein Code zum Öffnen der Datenbank:IndexedDB onupgradeeneded Ereignisziel ist null auf iOS
indexedDB = window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB || window.shimIndexedDB;
window.IDBTransaction = window.IDBTransaction || window.webkitIDBTransaction || window.msIDBTransaction;
window.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange || window.msIDBKeyRange;
if (!indexedDB) {
window.alert("Your browser doesn't support a stable version of IndexedDB.");
}
console.log("openDb ...");
var req = indexedDB.open(insectDbName, 21);
console.log(req);
req.onsuccess = function(evt) {
debugger;
db = this.result;
console.log("openDb DONE");
};
req.onerror = function(evt) {
//debugger;
console.error("openDb: ", evt.target.errorCode);
};
req.onupgradeneeded = function(evt) {
console.log("openDb.onupgradeneeded");
//debugger;
var versionStore = evt.currentTarget.result.createObjectStore(versionStoreName, { autoIncrement : true});
console.log("versionStore created");
};
Nun, mein Problem ist, wenn ich die Datenbank öffnen, die Anforderung ist kein IDBOpenRequest
Objekt. Aber die Ereignisse schießen. Wenn ich die Datenbank mit einer neuen Versionsnummer öffne, wird das Ereignis aufgerufen. Und wenn ich mit der aktuellen Version öffne, wird das onsuccess
Ereignis aufgerufen. Das Problem besteht darin, dass die Objektspeicher nie erstellt werden, da im onupgradeneeded
-Ereignis evt.currentTarget
null ist.
Ich habe bereits die IndexedDBshim und die Cordova IndexedDB Plugin aufgenommen, aber es funktioniert immer noch nicht.
Hat jemand ähnliche Probleme festgestellt?