我是IndexedDB和sencha touch框架的新手。 在sencha中学习IndexedDB时,我遇到了一个问题,我搜索了很多但却找不到的解决方案。
让我先向您展示我的代码
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
任何帮助将不胜感激。谢谢。
答案 0 :(得分:1)
此错误消息并非特定于使用indexedDB。对indexedDB.db.transaction()
的调用是生成此错误消息的原因。当您尝试调用未初始化的对象的方法时,会发生此错误。要避免此错误,请不要在onsuccess回调函数范围之外使用var db
。不要尝试使用db=event.target.result;
。
发生此错误是因为您可能不熟悉异步函数。在继续使用indexedDB之前,您需要了解有关如何编写异步代码的更多信息。
这个问题与几个类似的问题重复: