Javascript IndexedDb:使用多个键搜索一系列值
Javascript IndexedDb: searching a range of value using multiple keys
是否可以在多个键上使用"绑定"键范围搜索索引 Db 对象存储。使用以下数据:
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
键范围进行测试。
有没有另一种方法可以在多个键上实现此范围搜索?
对于信息,我从这篇文章中获得了多重索引的灵感:Javascript:使用多个索引搜索indexeddb
您必须手动组合所有四个单独的键范围查询。
索引数据库查询支持仅改变最后一个键。例如,以下查询将起作用。
let keyRange = IDBKeyRange.bound(
[0,5,10,0],
[0,5,10,10]
);
我相信你问的问题相当于:
多个属性上的索引数据库游标范围
也就是说,您正在尝试执行由多个维度限制的查询。索引数据库查询(当前)仅限于范围,范围是一维的。因此,范围开始 [s1
, s2] = [0, 0, 0] 到结束 [e1, e2] = [2, 2] 包括值 [v1, v2] = [1, 3],因为 s1 <= v1 <= e1,因此不考虑 v2。该文章中有一个链接到的解决方案。
相关文章:
- 用程序搜索JQuery数据表中的文本
- 在html Select中添加搜索
- Ajax Live搜索发布到Laravel视图
- 谷歌放置API:按国家或餐馆名称搜索餐馆
- 学生搜索项目jquery/javascript
- 用于搜索的聚合物嵌套绑定
- 在javascript中搜索具有重复值的两个数组中的匹配值
- Angularjs-utils高亮过滤器在搜索时破坏应用程序
- 使用javascript搜索具有用户输入的数组
- 淘汰搜索/筛选
- 搜索api在mac上显示对话框
- AngularJS/HTML/Bootstrap元素用于动态搜索结果
- 谷歌水印未显示在自定义搜索框中
- 在javascript中搜索项目列表的性能
- 正在搜索JavaScript日期选择器滑块
- JQuery中的活动搜索栏
- 如何在剑道下拉列表中按文本和值搜索
- 谷歌CSE-搜索参数
- Javascript IndexedDb:使用多个键搜索一系列值
- 如何搜索一系列数组以获得特定匹配并显示结果