javascript七基础学习系列一千五百一十一:键范围

使用游标会给人一种不太理想的感觉,因为获取数据的方式受到了限制。使用键范围(key range)
可以让游标更容易管理。键范围对应IDBKeyRange 的实例。有四种方式指定键范围,第一种是使用
only()方法并传入想要获取的键:
const onlyRange = IDBKeyRange.only(“007”);
这个范围保证只获取键为"007"的值。使用这个范围创建的游标类似于直接访问对象存储并调用
get(“007”)。
第二种键范围可以定义结果集的下限。下限表示游标开始的位置。例如,下面的键范围保证游标从
"007"这个键开始,直到最后:
// 从"007"记录开始,直到最后
const lowerRange = IDBKeyRange.lowerBound(“007”);
如果想从"007"后面的记录开始,可以再传入第二个参数true:
// 从"007"的下一条记录开始,直到最后
const lowerRange = IDBKeyRange.lowerBound(“007”, true);
第三种键范围可以定义结果集的上限,通过调用upperBound()方法可以指定游标不会越过的记
录。下面的键范围保证游标从头开始并在到达键为"ace"的记录停止:
// 从头开始,到"ace"记录为止
const upperRange = IDBKeyRange.upperBound(“ace”);
如果不想包含指定的键,可以在第二个参数传入true:
// 从头开始,到"ace"的前一条记录为止
const upperRange = IDBKeyRange.upperBound(“ace”, true);
要同时指定下限和上限,可以使用bound()方法。这个方法接收四个参数:下限的键、上限的键、
可选的布尔值表示是否跳过下限和可选的布尔值表示是否跳过上限。下面是几个例子:
// 从"007"记录开始,到"ace"记录停止
const boundRange = IDBKeyRange.bound(“007”, “ace”);
// 从"007"的下一条记录开始,到"ace"记录停止
const boundRange = IDBKeyRange.bound(“007”, “ace”, true);
// 从"007"的下一条记录开始,到"ace"的前一条记录停止
const boundRange = IDBKeyRange.bound(“007”, “ace”, true, true);
// 从"007"记录开始,到"ace"的前一条记录停止
const boundRange = IDBKeyRange.bound(“007”, “ace”, false, true);
定义了范围之后,把它传给openCursor()方法,就可以得到位于该范围内的游标:
const store = db.transaction(“users”).objectStore(“users”),
range = IDBKeyRange.bound(“007”, “ace”);
request = store.openCursor(range);
request.onsuccess = function(event){
const cursor = event.target.result;
if (cursor) { // 永远要检查
console.log(Key: ${cursor.key}, Value: ${JSON.stringify(cursor.value)});
cursor.continue(); // 移动到下一条记录
} else {
console.log(“Done!”);
}
};
这个例子只会输出从键为"007"的记录开始到键为"ace"的记录结束的对象,比上一节的例子要少。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值