2016-02-28 4 views
0

Я пытаюсь исправить неудачные тесты библиотеки sklad в Internet Explorer, запустив их в SauceLabs. К сожалению, я обнаружил, что свойство autoIncrement хранилища объектов всегда неопределено, но я не мог найти никаких доказательств того, что это свойство нарушено в IE. Или я чего-то не хватает?IndexedDB в IE11/Edge: почему objStore.autoIncrement не определено?

var sDBName = "ADatabase" + Date.now(); 
var nDBVersion = 1.0; 
var req = indexedDB.open(sDBName, nDBVersion); 
req.onsuccess = function(evt) { 
    var tr = evt.target.result.transaction(['MyObjectStore'], 'readwrite'); // reaonly 
    tr.oncomplete = function() { 
    console.log('transaction completed') 
    } 

    var objStore = tr.objectStore('MyObjectStore'); 
    console.log('objStore', objStore); 

    // expect to get true, but it's undefined 
    console.log('objStore.autoIncrement', objStore.autoIncrement); 

    console.log('objStore.keyPath', objStore.keyPath); 
} 

req.onupgradeneeded = function(evt) { 
    console.log('upgradeneeded') 
    var hDBHandle = evt.target.result; 
    var sStoreName = "MyObjectStore"; 
    var oDBOptions = { keyPath : "RecordID", autoIncrement : true }; 
    var oStore = hDBHandle.createObjectStore(sStoreName, oDBOptions); 

    var oIxOptions = { unique: false, multientry: false }; 
    oStore.createIndex("SortByTitle", "DeckTitle", oIxOptions); 
    oStore.createIndex("SortByDesc", "Description", oIxOptions); 
    console.log('upgraded') 
} 
+0

Я только что нашел один и тот же вопрос в MS отслеживания ошибок, но он закрыт в 2012 году, и ошибка должна уже была исправлена в IE10: https://connect.microsoft.com/IE/Feedback/Details/772726 –

+0

Да, кажется, ошибка. Функциональность есть, атрибут для проверки свойств магазина просто не отображается. –

+0

@ JoshuaBell единственное печальное, что никто не заново обнаружил ошибку в Microsoft tracker –

ответ

0

Плохие новости: это ошибка и она закрыта в Microsoft багтрекер: https://connect.microsoft.com/IE/Feedback/Details/772726

Хорошие новости: Вы можете написать polyfill для этого свойства, как я сделал (link). Идея состоит в том, чтобы проверить, не является ли autoIncrement неопределенным. Если он не определен, вы должны начать транзакцию чтения/записи, где вы добавляете данные в хранилище объектов. Основываясь на ответах/исключениях, вы можете понять, имеет ли это хранилище объектов истинное или ложное поле autoIncrement. Конечно, вы должны отменить эту транзакцию впоследствии.

Если вы не хотите работать со всем этим материалом, я написал библиотеку для вас: link

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

  • Нет связанных вопросов^_^