2016-05-03 2 views
0

Я разрабатываю приложение Cordova для iOS с базой данных IndexedDB в фоновом режиме. Вот мой код для открытия базы данных:IndexedDB onupgradeneeded Цель события равна нулю для 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"); 
      }; 

Теперь моя проблема не в том, когда я открыть базу данных, запрос нет IDBOpenRequest объекта. Но события стреляют. Когда я открываю базу данных с новым номером версии, вызывается событие onupgradeneeded. И когда я открываю текущую версию, вызывается событие onsuccess. Проблема заключается в том, что объектные магазины никогда не создаются, потому что в событии onupgradeneededevt.currentTarget имеет значение null.

Я уже включил IndexedDBshim и Cordova IndexedDB Plugin, но он все еще не работает.

С кем-нибудь сталкивались с аналогичными проблемами?

ответ

0

Хорошо, я нашел проблему. Мне пришлось использовать evt.target вместо evt.currentTarget.

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