You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何删除IndexedDB中以指定前缀开头的键范围?

IndexedDB 删除特定前缀键的正确方法

你当前使用IDBKeyRange.lowerBound()的问题在于,它会匹配所有大于等于指定前缀的键,比如如果存在zoo/xxx这类键,也会被误删除(字符串排序中z在t、s之后),无法精准限定前缀范围。

要精准删除以trackList/或songBook/开头的键,需要构造左闭右开的键范围:左边界为前缀本身,右边界设为前缀的"上限阈值"(比如Unicode最大字符\uffff,所有常规字符串都小于它),确保只匹配前缀开头的键。

正确代码示例

// 删除所有以 trackList/ 开头的键
const trackListRange = IDBKeyRange.bound('trackList/', 'trackList/\uffff', false, true);
await db.delete('store', trackListRange);

// 删除所有以 songBook/ 开头的键
const songBookRange = IDBKeyRange.bound('songBook/', 'songBook/\uffff', false, true);
await db.delete('store', songBookRange);

参数说明

IDBKeyRange.bound(lower, upper, lowerOpen, upperOpen)的四个参数:

  • lower:范围的左边界(这里是前缀字符串)
  • upper:范围的右边界(前缀+\uffff)
  • lowerOpen:设为false,表示包含左边界的键
  • upperOpen:设为true,表示不包含右边界的键,这样就能精准匹配所有以指定前缀开头的键

如果你的业务键可能包含\uffff这类特殊字符,可以换用前缀的"下一个字符"作为上界,比如trackList/的上界用trackList0(/的ASCII码为47,0为48,比/大),但\uffff的方式通用性更强。

内容的提问来源于stack exchange,提问作者Skip

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 04:33:18