Indexeddb IDBKeyRange.only不是函数

时间:2016-06-29 20:43:32

标签: javascript cordova indexeddb

我正在开发一款使用了一些Indexeddb的Cordova应用程序(适用于iOS的垫片)。

我使用IDBKeyRange作为具有已定义索引的对象库。这在Chrome浏览器中运行良好,但在Android和iOS上存在一些问题。

我有以下受MDN's example启发的TypeScript:

var transaction = this.db.transaction(objectStoreName, "readonly");
var objectStore = transaction.objectStore(objectStoreName);
var index: any = objectStore.index(indexName);
var request = index.getAll(IDBKeyRange.only(indexValue));

在桌面上的Chrome中运行时,一切都很好。当我在已编译的Android或iOS应用程序中运行相同的代码时,我看到:

TypeError: IDBKeyRange.only is not a function

我注销了IDBKeyRange对象,它似乎是一个函数本身,但这并不是很有用,因为它在(按预期工作)浏览器中执行相同操作。 Chrome退出:

function IDBKeyRange()

我解决这个问题的第一个尝试是更密切地关注MDN的例子,并做一些类似的事情:

 window.IDBKeyRange = window.IDBKeyRange || window.webkitIDBKeyRange || window.msIDBKeyRange;

但是同样的行为发生了。有什么建议吗?

更新

我在2个不同的Android Galaxy Tab As上尝试了这个。两者都具有相同的型号和Android版本(5.0.2)。这适用于一个设备但不适用于另一个设备(wut)。相同的代码,相同的数据,相同的构建过程。

通过进一步挖掘,似乎在没有包含index.getAll is not a function的情况下发生IDBKeyRange.only(indexValue)错误。当index退出时,我会收到一个没有任何方法的IDBIndex对象。

0 个答案:

没有答案