我正在寻找一些关于如何使用不同的键过滤并同时从 IndexedDB 中获取排序结果的建议。
条件是:
我的解决方案包括两件事:
具有两个键的复合索引:过滤键和排序键。在我的示例中,我按名称过滤并按id排序:
objectStore.createIndex('nameId', ['name','id'], { unique: true });
在查询中,我使用带有下限和上限的索引。由于附加了“0”,这不是一个优雅的解决方案:
objectStore.index('nameId').openCursor(window.IDBKeyRange.bound(['John'], ['John' + '0'], true, false));
这按预期工作,在我的示例中返回:
1. {"name":"John","id":13}
2. {"name":"John","id":75}
3. {"name":"John","id":77}
4. {"name":"John","id":78}
5. {"name":"John","id":88}
6. {"name":"John","id":98}
7. {"name":"John","id":99}
Run Code Online (Sandbox Code Playgroud)
是否有更优雅的解决方案来实现相同的结果?
完整示例:
http://codepen.io/ncortines/pen/pjvgJB?editors=001
1. {"name":"John","id":13}
2. {"name":"John","id":75}
3. {"name":"John","id":77}
4. {"name":"John","id":78}
5. {"name":"John","id":88}
6. {"name":"John","id":98}
7. {"name":"John","id":99}
Run Code Online (Sandbox Code Playgroud)