IDBIndex - 提供对数据库索引的异步访问

IDBIndexIndexedDB API 的 接口,提供对数据库索引的异步访问。索引是一种对象存储,用于在另一个对象存储中查找记录,称为引用的对象存储。您可以使用此接口来检索数据。

您可以通过主键或使用索引检索对象库中的记录。索引允许您使用对象存储记录中除主键之外的值的属性来查找对象库中的记录。

索引是持久的键值存储,其记录的值部分是引用的对象库中记录的关键部分。只要插入,更新或删除引用的对象库中的记录,就会自动填充索引中的记录。索引中的每个记录只能指向其引用的对象库中的一个记录,但是多个索引可以引用同一个对象库。当对象库更改时,引用该对象库的所有索引都将自动更新。

您可以在一定范围内获取一组键。要了解更多信息,请参阅 IDBKeyRange

注意: 此特性在 Web Worker 中可用。

属性

IDBIndex.isAutoLocale 只读

返回一个 Boolean,指示索引是否在创建时指定了 localeauto(参见 createIndex() 的 optionalParameters。)

IDBIndex.locale 只读

返回索引的语言环境(例如 en-USpl),如果在创建时指定了 locale 值的话(参见 createIndex() 的 optionalParameters。)

IDBIndex.name

此索引的名称。

IDBIndex.objectStore 只读

此索引引用的对象库的名称。

IDBIndex.keyPath 只读

此索引的 key path。如果为 null,则此索引不是自动填充

IDBIndex.multiEntry 只读

当评估索引的键路径的结果产生数组时,会影响索引的行为方式。如果为 true,则索引中的每个项目中都有一条记录。如果为 false ,则每个键的数组都有一条记录。

IDBIndex.unique 只读

如果为 true,则此索引不允许键存在重复值。

方法

继承自:EventTarget

IDBIndex.count()

返回 IDBRequest 对象,并在单独的线程中返回键范围内的记录数。

IDBIndex.get()

返回一个 IDBRequest 对象,如果 keyIDBKeyRange,并在一个单独的线程中,找到引用的对象存储库中与给定键对应的值或第一个对应的值。

IDBIndex.getKey()

返回一个 IDBRequest 对象,如果 keyIDBKeyRange,并在一个单独的线程中,找到给定的键或主键。

IDBIndex.getAll()

返回一个 IDBRequest 对象,如果 keyIDBKeyRange,在单独的线程中,查找引用的对象库中与给定键对应,或者在范围内的所有匹配值。

IDBIndex.getAllKeys()

返回一个 IDBRequest 对象,如果 keyIDBKeyRange,在单独的线程中,查找引用的对象库中与给定键对应,或者在范围内的所有匹配键。

IDBIndex.openCursor()

返回一个 IDBRequest 对象,并在单独的线程中,在指定的键范围内创建游标

IDBIndex.openKeyCursor()

返回一个 IDBRequest 对象,并在单独的线程中,在指定的键范围上创建一个光标,由此索引排列。

实例

在下面的实例中,我们打开一个事务和一个对象存储,然后从一个简单的联系人数据库中获取索引 lName 。然后我们使用 IDBIndex.openCursor 在索引上打开一个基本游标 - 这与使用 IDBObjectStore.openCursor 直接在 ObjectStore 上打开游标相同,区别是返回的记录是根据索引而不是主键排序的。

最后,我们遍历每条记录,并将数据插入到 HTML 表格中。有关完整的工作示例,请参阅我们的IDBIndex-实例演示仓库查看实例)。

function displayDataByIndex() {
  tableEntry.innerHTML = '';
  var transaction = db.transaction(['contactsList'], 'readonly');
  var objectStore = transaction.objectStore('contactsList');

  var myIndex = objectStore.index('lName'); 
  myIndex.openCursor().onsuccess = function(event) {
    var cursor = event.target.result;
    if(cursor) {
      var tableRow = document.createElement('tr');
      tableRow.innerHTML =   '<td>' + cursor.value.id + '</td>'
                           + '<td>' + cursor.value.lName + '</td>'
                           + '<td>' + cursor.value.fName + '</td>'
                           + '<td>' + cursor.value.jTitle + '</td>'
                           + '<td>' + cursor.value.company + '</td>'
                           + '<td>' + cursor.value.eMail + '</td>'
                           + '<td>' + cursor.value.phone + '</td>'
                           + '<td>' + cursor.value.age + '</td>';
      tableEntry.appendChild(tableRow);  

      cursor.continue();
    } else {
      console.log('所有条目都显示出来了。');    
    }
  };
};

规范

规范 状态 备注
Indexed Database API
IDBIndex 的定义
推荐 -
Indexed Database API 2.0
IDBIndex 的定义
编者的草案 -

桌面浏览器兼容性

特性ChromeEdgeFirefoxInternet ExplorerOperaSafari
基础支持

24

23 — 57 webkit

支持

16

10 — 16 moz

101157
Available in workers 支持 支持37 未知 支持 未知
isAutoLocale 不支持 不支持43 不支持 不支持 不支持
keyPath

24

23 — 24 webkit

12

16

10 — 16 moz

101157
locale 不支持 不支持43 不支持 不支持 不支持
multiEntry

24

23 — 24 webkit

未知

16

10 — 16 moz

101157
name

24

23 — 24 webkit

12

16

10 — 16 moz

101157
objectStore

24

23 — 24 webkit

12

16

10 — 16 moz

101157
unique

24

23 — 24 webkit

12

16

10 — 16 moz

101157
count

24

23 — 24 webkit

12

16

10 — 16 moz

101157
get

24

23 — 24 webkit

12

16

10 — 16 moz

101157
getAll48 支持44 不支持3510.1
getAllKeys48 支持44 不支持3510.1
getKey

24

23 — 24 webkit

12

16

10 — 16 moz

101157
openCursor

24

23 — 24 webkit

12

16

10 — 16 moz

101157
openKeyCursor

24

23 — 24 webkit

12

16

10 — 16 moz

101157

移动浏览器兼容性

特性AndroidChrome for AndroidEdge mobileFirefox for AndroidIE mobileOpera AndroidiOS Safari
基础支持

24

23 — 57 webkit

24

23 — 57 webkit

未知22 未知228
Available in workers 支持 支持 支持37 未知 支持 未知
isAutoLocale 不支持 不支持 不支持43 未知 不支持 不支持
keyPath

24

23 — 24 webkit

24

23 — 24 webkit

支持22 未知228
locale 不支持 不支持 不支持43 未知 不支持 不支持
multiEntry

24

23 — 24 webkit

24

23 — 24 webkit

未知22 未知228
name

24

23 — 24 webkit

24

23 — 24 webkit

支持22 未知228
objectStore

24

23 — 24 webkit

24

23 — 24 webkit

支持22 未知228
unique

24

23 — 24 webkit

24

23 — 24 webkit

支持22 未知228
count

24

23 — 24 webkit

24

23 — 24 webkit

支持22 未知228
get

24

23 — 24 webkit

24

23 — 24 webkit

支持22 未知228
getAll4848 支持44 未知3510.1
getAllKeys4848 支持44 未知3510.1
getKey

24

23 — 24 webkit

24

23 — 24 webkit

支持22 未知228
openCursor

24

23 — 24 webkit

24

23 — 24 webkit

支持22 未知228
openKeyCursor

24

23 — 24 webkit

24

23 — 24 webkit

支持22 未知228

1. 部分的

相关链接