Javascript Indexeddb:使用通配符进行搜索

Javascript Indexeddb:使用通配符进行搜索,javascript,indexeddb,Javascript,Indexeddb,我想知道是否可以使用通配符在indexeddb对象存储上执行搜索。 查找具有以“555”开头的键的所有对象会很方便,例如这可以使用组合键或键片段开箱即用。 IndexedDB中键的工作方式是生成一个“keyRange”对象并将其传递给游标调用。keyrange传递的信息类似于“从A开始,到Z结束,包括在内。” 从本质上讲,这里面有部分匹配;缺点是,光标将返回键之间的任何键,您可能需要进一步过滤这些结果 假设您在对象存储中将以下单词作为键: 土豚 苹果 谷歌 微软 键范围“A到Z,包括”将返回

我想知道是否可以使用通配符在indexeddb对象存储上执行搜索。
查找具有以“555”开头的键的所有对象会很方便,例如

这可以使用组合键或键片段开箱即用。 IndexedDB中键的工作方式是生成一个“keyRange”对象并将其传递给游标调用。keyrange传递的信息类似于“从A开始,到Z结束,包括在内。”

从本质上讲,这里面有部分匹配;缺点是,光标将返回键之间的任何键,您可能需要进一步过滤这些结果

假设您在对象存储中将以下单词作为键:

  • 土豚
  • 苹果
  • 谷歌
  • 微软
键范围“A到Z,包括”将返回所有这些,但“Ap到Z,包括”将只返回最后三个


我用来实现这一点的另一种技术是将“过滤器”函数传递给调用IndexedDB的方法。在方法onsuccess回调中,通过筛选函数传递结果(
event.target.result
),如果返回true,则调用方法调用方的onsuccess回调。

默认情况下不可能,但我为indexeddb编写的库支持它。试试。

也可以使用indexeddb中的通配符进行搜索。请参阅链接

对于通配符,以下命令应起作用: var range=IDBKeyRange.bound(“555”、“555”+'\uffff')


或者可以使用Linq2indexeddb库来利用类似的功能。

是的,使用通配符是可行的


我还不能投票,甚至不能对之前的答案发表评论(嗯…),所以我将重复user2025527的答案,因为它完全符合我的需要

使用bounds方法并为第一个参数指定基值,为第二个参数指定相同的值加上额外的字符

在大多数情况下,额外的字符应该是字符集中的最后一个:\uffff

但是你可以自由决定什么是限制,特别是在处理本地化时

假设索引中有以下值:

  • A
  • AB
  • B
  • BA
  • BB
  • C
要查找所有带有“BA”的语句,您应该使用

var range = IDBKeyRange.bound("BA", "BA" + '\uffff');

在SQL中,它是用
键执行的,比如“555%”
,这应该可以工作。可能是非常好的重复。我一有时间就去看看!“所以我将重复user2025527的答案”请不要重复答案;如果你要这样做,至少要在上面添加一些东西。那么如何搜索所有包含字母“B”的值呢