是否可以使用" bound"来搜索indexedDb对象库。 keyRange多个键。使用以下数据:
let simpleA = {
id: 'A',
bottomX: 2.5,
bottomY: 5.5,
topX: 3.5,
topY: 6.5
};
let simpleB = {
id: 'B',
bottomX: 4.2,
bottomY: 4.2,
topX: 4.8,
topY: 4.8
};
let simpleC = {
id: 'C',
bottomX: 8.5,
bottomY: 6.5,
topX: 9.5,
topY: 7.5
};
我尝试在多个键上创建索引:
simpleStore.createIndex('bottomX bottomY topX topY', ['bottomX', 'bottomY', 'topX', 'topY']);
和这样的关键范围:
let keyRange = IDBKeyRange.bound(
[0,5,0,0],
[10,6,10,10]
);
然后创建一个游标:
let mycursor = index.openCursor(keyRange);
我希望这会给我simpleA
和simpleB
而不是simpleC
的结果,因为bottomY属性不在范围内。但是,当我测试此代码时,我意识到只有索引的第一个键是使用bound
键范围的测试。
还有其他方法可以在多个密钥上实现此范围搜索吗?
对于infos,我从这篇文章中得到了多重索引的灵感: Javascript: Searching indexeddb using multiple indexes
答案 0 :(得分:1)
我相信你提出的问题相当于:
Indexed DB cursor ranges on mulitiple properties
也就是说,您尝试进行多维度限制的查询。索引DB查询(当前)限于范围,范围是1维。因此范围start [s1,s2] = [0,0,0]到end [e1,e2] = [2,2]包括值[v1,v2] = [1,3]因为s1< = v1&lt ; = e1,所以不考虑v2。
从该文章中可以找到解决方案。
答案 1 :(得分:0)
您必须手动组合所有四个单独的键范围查询。
IndexedDB查询支持仅改变最后一个键。例如,以下查询将起作用。
Uninstall-Package Glimpse
Install-Package Glimpse.MVC5