## 第十节:IDBKeyRange 对象
`IDBKeyRange`对象代表数据仓库(object store)里面的一组主键。根据这组主键,可以获取数据仓库或索引里面的一组记录。
`IDBKeyRange`可以只包含一个值,也可以指定上限和下限。它有四个静态方法,用来指定主键的范围。
* `IDBKeyRange.lowerBound()`:指定下限。
* `IDBKeyRange.upperBound()`:指定上限。
* `IDBKeyRange.bound()`:同时指定上下限。
* `IDBKeyRange.only()`:指定只包含一个值。
下面是一些代码实例。
~~~
// All keys ≤ x
var r1 = IDBKeyRange.upperBound(x);
// All keys < x
var r2 = IDBKeyRange.upperBound(x, true);
// All keys ≥ y
var r3 = IDBKeyRange.lowerBound(y);
// All keys > y
var r4 = IDBKeyRange.lowerBound(y, true);
// All keys ≥ x && ≤ y
var r5 = IDBKeyRange.bound(x, y);
// All keys > x &&< y
var r6 = IDBKeyRange.bound(x, y, true, true);
// All keys > x && ≤ y
var r7 = IDBKeyRange.bound(x, y, true, false);
// All keys ≥ x &&< y
var r8 = IDBKeyRange.bound(x, y, false, true);
// The key = z
var r9 = IDBKeyRange.only(z);
~~~
`IDBKeyRange.lowerBound()`、`IDBKeyRange.upperBound()`、`IDBKeyRange.bound()`这三个方法默认包括端点值,可以传入一个布尔值,修改这个属性。
与之对应,`IDBKeyRange`对象有四个只读属性。
* `IDBKeyRange.lower`:返回下限
* `IDBKeyRange.lowerOpen`:布尔值,表示下限是否为开区间(即下限是否排除在范围之外)
* `IDBKeyRange.upper`:返回上限
* `IDBKeyRange.upperOpen`:布尔值,表示上限是否为开区间(即上限是否排除在范围之外)
`IDBKeyRange`实例对象生成以后,将它作为参数输入`IDBObjectStore`或`IDBIndex`对象的`openCursor()`方法,就可以在所设定的范围内读取数据。
~~~
var t = db.transaction(['people'], 'readonly');
var store = t.objectStore('people');
var index = store.index('name');
var range = IDBKeyRange.bound('B', 'D');
index.openCursor(range).onsuccess = function (e) {
var cursor = e.target.result;
if (cursor) {
console.log(cursor.key + ':');
for (var field in cursor.value) {
console.log(cursor.value[field]);
}
cursor.continue();
}
}
~~~
`IDBKeyRange`有一个实例方法`includes(key)`,返回一个布尔值,表示某个主键是否包含在当前这个主键组之内。
~~~
var keyRangeValue = IDBKeyRange.bound('A', 'K', false, false);
keyRangeValue.includes('F') // true
keyRangeValue.includes('W') // false
~~~
- 第一章:音视频
- 第一节:概述
- 第二节:媒体元素
- 第三节:视频元素
- 第四节:音频元素
- 第四节:事件
- 第二章:高德地图
- 第三章:Storage 接口
- 第一节:概述
- 第二节:属性和方法
- 第三节:事件
- 第四章:IndexedDB
- 第一节:概述
- 第二节:基本概念
- 第三节:indexedDB 对象
- 第四节:IDBRequest 对象
- 第五节:IDBDatabase 对象
- 第六节:IDBObjectStore 对象
- 第七节:IDBTransaction 对象
- 第八节:IDBIndex 对象
- 第九节:IDBCursor 对象
- 第十节:IDBKeyRange 对象
- 第十一节:操作流程
- 第五章:Canvas
- 第一节:概述
- 第二节:绘制图像
- 第一课时:路径
- 第二课时:线型
- 第三课时:矩形
- 第四课时:弧线
- 第五课时:文本
- 第六课时:渐变色和图像填充
- 第七课时:阴影
- 第三节:图像处理
- 第一课时:写入图像
- 第二课时:像素读写
- 第三课时:保存和恢复
- 第四课时:画布
- 第五课时:图像变换
- 第四节:元素方法
- 第一课时:toDataURL()
- 第二课时:toBlob()
- 第五节:使用实例
- 第一课时:动画效果
- 第二课时:像素处理