IndexedDB中的OR或IN操作

ZoM*_*ZoM 4 indexeddb

有没有办法在IndexedDB中对同一属性执行OR或IN查询?

换句话说,我如何得到结果,

SELECT * FROM MyTable WHERE columnA IN ('ABC','DFT') AND columnB = '123thd'
Run Code Online (Sandbox Code Playgroud)

谢谢!

bul*_*ley 5

在没有多个请求的情况下,没有办法开箱即用OR或类似IN的查询.通常,像这样的问题的模式是"超出范围,拉出更多的条目然后你需要并将其过滤到完全匹配."

Chrome团队已经 提出了一种openKeyCursor()方法作为此类查询的解决方案(感谢Kyaw Tun的建议,这是SO的参与者和ydn的作者),但它不是标准的,也没有在其他浏览器中采用.

我能想到的最佳解决方案类似于w3线程的注释#4:

  • columnB使用值'123thd' 打开精确的键光标
  • 跨所有这些记录的光标,匹配columnA值'ABC'和'DFT'的对象

如果你通常期望columnB'123thd' 的结果数量非常大,并且大多数没有'ABC'或'DFT'的值,那么你可能需要打开两个游标 - 一个是columnAw/value' ABC'和另一个价值'DFT'.这是一种更复杂的方法,因为您必须手动合并两个结果集.