在IndexedDB中,是否可以进行排序的复合查询?

假设表格具有名称,ID,年龄,性别,学历等。ID是关键,并且该表也按名称,年龄和性别进行索引。我需要所有25岁以上的男学生,按其姓名排序。


这在mySQL中很简单:


    SELECT * FROM table WHERE age > 25 AND sex = "M" ORDER BY name

IndexDB允许创建索引并基于该索引对查询进行排序。但是它不允许多个查询,例如年龄和性别。我发现了一个名为queryIndexedDB(https://github.com/philikon/queryIndexedDB)的小型库,该库允许复合查询,但不提供排序结果。


那么,在使用IndexedDB时,是否有一种方法可以进行排序的复合查询?


米琪卡哇伊
浏览 1760回答 3
3回答

一只甜甜圈

我迟了几年,但我只想指出,乔什的答案只考虑了查询中“列”是索引的一部分的情况keyPath。如果在索引的之外存在任何上述“列” keyPath,则必须在示例中创建的游标进行迭代的每个条目上测试涉及它们的条件。因此,如果您正在处理此类查询,或者您的索引不是unique,请准备编写一些迭代代码!无论如何,我建议您检查一下BakedGoods,是否可以将查询表示为布尔表达式。对于这些类型的操作,它将始终在焦点objectStore上打开游标,除非您执行严格的相等查询(x ===? y,假设x是objectStore或索引键),但它将避免编写自己的游标迭代的麻烦码:bakedGoods.getAll({    filter: "keyObj > 5 && valueObj.someProperty !== 'someValue'",    storageTypes: ["indexedDB"],    complete: function(byStorageTypeResultDataObj, byStorageTypeErrorObj){}});为了完全透明起见,BaikeGoods由moi维护。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Html5