Javascript IndexedDb:使用多个键

时间:2016-01-27 14:46:35

标签: javascript indexeddb

是否可以使用" 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);

我希望这会给我simpleAsimpleB而不是simpleC的结果,因为bottomY属性不在范围内。但是,当我测试此代码时,我意识到只有索引的第一个键是使用bound键范围的测试。

还有其他方法可以在多个密钥上实现此范围搜索吗?

对于infos,我从这篇文章中得到了多重索引的灵感: Javascript: Searching indexeddb using multiple indexes

2 个答案:

答案 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