我正在开发一款使用了一些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
对象。