Javascript 未捕获类型错误:使用indexedDB时,Chrome中的类型错误
我正在尝试设置indexeddb存储以便在chrome中使用。但是当我尝试设置读写事务时,我得到了一个未捕获的类型错误 我还没有找到关于使用webkitIDB的好的、最新的信息。所以我基本上是在瞎飞。知道我做错了什么吗?有没有我错过的好老师 设置:Javascript 未捕获类型错误:使用indexedDB时,Chrome中的类型错误,javascript,indexeddb,Javascript,Indexeddb,我正在尝试设置indexeddb存储以便在chrome中使用。但是当我尝试设置读写事务时,我得到了一个未捕获的类型错误 我还没有找到关于使用webkitIDB的好的、最新的信息。所以我基本上是在瞎飞。知道我做错了什么吗?有没有我错过的好老师 设置: function OfflineStorage() { this.saveJSONString = __bind(this.saveJSONString, this); var request, _this = this; thi
function OfflineStorage() {
this.saveJSONString = __bind(this.saveJSONString, this);
var request,
_this = this;
this.dbkeyRange = window.webkitIDBKeyRange;
this.dbTransaction = window.webkitIDBTransaction;
this.db = window.webkitIndexedDB;
request = this.db.open("lucidFrog");
request.onsuccess = function(e) {
_this.db = e.target.result;
return _this.setupDB(); //setupDB() ensures the objectStores have been created.
};
}
保存功能:
OfflineStorage.prototype.saveJSONString = function(objectStore, json_string, obj_id) {
var request, store, transaction;
//PROBLEM AREA, gives "Uncaught TypeError: Type error"
transaction = this.db.transaction([objectStore], this.dbTransaction.READ_WRITE, 0);
////////////////////
store = transaction.objectStore(objectStore);
request = store.put({
"json": json_string,
"id": obj_id
});
request.onsuccess = function(e) {
return console.log("YYYYYYEEEEEAAAAAHHHHHH!!!");
};
};
已创建请求的objectStore,并确认已定义此.dbTransaction。这不是从对象存储抛出的IndexedDB错误,而是安装中的某个错误。当您将错误的对象类型传递给调用时会引发这种错误,这就是为什么我第一次猜测objectStore变量实际上不是字符串 基于消除,this.db不是未定义的,否则它将在事务上出错,事务是一个函数,否则它将引发非函数调用。所以我不得不猜测this.dbTransaction.READ_WRITE应该返回1,很好,再检查一下 因此,我强烈怀疑这是导致问题的第三个参数。我相当确定我从未使用过spec optional中显示的第三个参数,并且认为它在这里是不必要的,因为默认超时已经是0。你能试着把那行改成下面的,看看它是否行得通吗 transaction=this.db.transaction[objectStore],this.dbTransaction.READ\u WRITE
更新:请注意,版本常量现在已弃用。您现在需要传递的不是这些数值,而是一个字符串:readwrite、readonly或versionchange。这不是从对象存储抛出的IndexedDB错误,而是设置中的某个错误。当您将错误的对象类型传递给调用时会引发这种错误,这就是为什么我第一次猜测objectStore变量实际上不是字符串 基于消除,this.db不是未定义的,否则它将在事务上出错,事务是一个函数,否则它将引发非函数调用。所以我不得不猜测this.dbTransaction.READ_WRITE应该返回1,很好,再检查一下 因此,我强烈怀疑这是导致问题的第三个参数。我相当确定我从未使用过spec optional中显示的第三个参数,并且认为它在这里是不必要的,因为默认超时已经是0。你能试着把那行改成下面的,看看它是否行得通吗 transaction=this.db.transaction[objectStore],this.dbTransaction.READ\u WRITE
更新:请注意,版本常量现在已弃用。您现在需要传递的不是这些数值,而是一个字符串:readwrite、readonly或versionchange。我喜欢将自己视为IndexedDB专家,我很乐意提供帮助。首先,您要传递的是objectStore变量是字符串还是对实际对象存储的引用,如objectStore创建时返回的引用?objectStore是作为字符串传递的。我喜欢将自己视为IndexedDB专家,我很乐意提供帮助。首先,您要传递的是objectStore变量是字符串还是对实际对象存储的引用,如objectStore创建时返回的引用?objectStore是作为字符串传递的。