小编Jua*_*nes的帖子

使用 IndexedDB 过滤和排序

我正在寻找一些关于如何使用不同的键过滤并同时从 IndexedDB 中获取排序结果的建议。

条件是:

  1. IndexedDB中有2个key,一个用于过滤,一个用于排序
  2. 查询时,过滤键值是已知的,但不知道界定排序键可能值的值
  3. 排序键值可能包含随机数字和字母

我的解决方案包括两件事:

  • 具有两个键的复合索引:过滤键和排序键。在我的示例中,我按名称过滤并按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)

javascript indexeddb

6
推荐指数
0
解决办法
4358
查看次数

标签 统计

indexeddb ×1

javascript ×1