indexedDB: вызов функции транзакции вызова

94
9

Я новичок в инфраструктуре IndexedDB и sencha touch. Изучая IndexedDB в sencha, я столкнулся с проблемой, решение, которое я искал много, но не смог найти.

Позвольте мне сначала показать вам мой кусок кода

        var db;
var myRequest = indexedDB.open("testDB", 8);

myRequest.onupgradeneeded = function (e) {
console.log("upgrading...");
var thisDB= e.target.result;
if(!thisDB.objectStoreNames.contains("FirstOS")){
thisDB.createObjectStore("FirstOS");
}
};

myRequest.onsuccess = function (e) {
console.log("success...");
db= e.target.result;
};

myRequest.onerror = function (e) {
console.log("error occured");
};

var transaction = db.transaction(["FirstOS"],"readwrite");
var store= transaction.objectStore("FirstOS");

Это исключает высказывание

Uncaught TypeError: Cannot read property 'transaction' of undefined 

Любая помощь будет оценена по достоинству. Спасибо.

спросил(а) 2014-07-22T13:07:00+04:00 5 лет, 11 месяцев назад
1
Решение
56

Это сообщение об ошибке не относится к использованию indexedDB. Вызов для indexedDB.db.transaction() - это то, что генерирует это сообщение об ошибке. Эта ошибка возникает, когда вы пытаетесь вызвать метод объекта, который не инициализирован. Чтобы избежать этой ошибки, не используйте var db вне области функции обратного вызова onsuccess. Не пытайтесь использовать db=event.target.result; ,

Эта ошибка возникает из-за того, что вы, вероятно, не знакомы с асинхронными функциями. Вам нужно будет узнать больше о том, как писать асинхронный код, прежде чем продолжать использовать indexedDB.

Этот вопрос является дубликатом нескольких похожих вопросов:

ответил(а) 2014-07-22T15:03:00+04:00 5 лет, 11 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема