Javascript Indexeddb:使用通配符进行搜索
我想知道是否可以使用通配符在indexeddb对象存储上执行搜索。Javascript Indexeddb:使用通配符进行搜索,javascript,indexeddb,Javascript,Indexeddb,我想知道是否可以使用通配符在indexeddb对象存储上执行搜索。 查找具有以“555”开头的键的所有对象会很方便,例如这可以使用组合键或键片段开箱即用。 IndexedDB中键的工作方式是生成一个“keyRange”对象并将其传递给游标调用。keyrange传递的信息类似于“从A开始,到Z结束,包括在内。” 从本质上讲,这里面有部分匹配;缺点是,光标将返回键之间的任何键,您可能需要进一步过滤这些结果 假设您在对象存储中将以下单词作为键: 土豚 苹果 谷歌 微软 键范围“A到Z,包括”将返回
查找具有以“555”开头的键的所有对象会很方便,例如这可以使用组合键或键片段开箱即用。 IndexedDB中键的工作方式是生成一个“keyRange”对象并将其传递给游标调用。keyrange传递的信息类似于“从A开始,到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
var range = IDBKeyRange.bound("BA", "BA" + '\uffff');
在SQL中,它是用
键执行的,比如“555%”
,这应该可以工作。可能是非常好的重复。我一有时间就去看看!“所以我将重复user2025527的答案”请不要重复答案;如果你要这样做,至少要在上面添加一些东西。那么如何搜索所有包含字母“B”的值呢