IDBCursor: direction 属性

Baseline 已广泛支持

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

注意:此功能在 Web Workers 中可用。

IDBCursor 接口的只读属性 direction 是一个字符串,用于返回光标的遍历方向(例如,通过 IDBObjectStore.openCursor 设置)。有关可能的值,请参阅下面的部分。

一个字符串,指示光标遍历数据的方向。可能的值包括:

next

此方向会导致光标在源的开头打开。

nextunique

此方向会导致光标在源的开头打开。对于具有重复值的每个键,只返回第一个访问的记录(最接近开头)。

prev

此方向会导致光标在源的末尾打开。

prevunique

此方向会导致光标在源的末尾打开。对于具有重复值的每个键,只返回第一个访问的记录(最接近末尾)。

示例

在这个简单的代码片段中,我们创建了一个事务,检索了一个对象存储,然后使用光标遍历对象存储中的所有记录。在每次迭代中,我们都会记录光标的方向。

注意:我们无法使用 direction 属性更改光标的遍历方向,因为它只读。我们通过 IDBObjectStore.openCursor 的第二个参数来指定遍历方向。

光标不需要我们根据键来选择数据;我们可以直接获取所有数据。另请注意,在循环的每次迭代中,你可以使用 cursor.value.foo 从光标对象下的当前记录中获取数据。有关完整的可工作示例,请参阅我们的 IDBCursor 示例在线查看示例)。

js
function backwards() {
  list.textContent = "";
  const transaction = db.transaction(["rushAlbumList"], "readonly");
  const objectStore = transaction.objectStore("rushAlbumList");

  objectStore.openCursor(null, "prev").onsuccess = (event) => {
    const cursor = event.target.result;
    if (cursor) {
      const listItem = document.createElement("li");
      listItem.textContent = `${cursor.value.albumTitle}, ${cursor.value.year}`;
      list.appendChild(listItem);

      console.log(cursor.direction);
      cursor.continue();
    } else {
      console.log("Entries displayed backwards.");
    }
  };
}

规范

规范
Indexed Database API 3.0
# ref-for-dom-idbcursor-direction①

浏览器兼容性

另见