IDBCursor.direction

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since September 2021.

IDBCursor 的方向属性是一个 DOMString ,表示游标遍历的方向, (比如可以通过 IDBObjectStore.openCursor 设置). 查看下文中取值章节获取可取值。

语法

js
cursor.direction;

取值

用一个字符串 (defined by the IDBCursorDirection enum) 表示游标的遍历方向。相关取值如下表所示:

Value Description
next 从数据源开始位置遍历
nextunique 从数据源开始遍历;当取值有重复时,只获取一次。
prev 从数据源的最后位置位置开取值
prevunique 从数据源的最后位置开始取值,只获取一次。

例子

在这个简单的例子中,我们首先创建一个事物对象,返回一个对象仓库 (store), 然后使用邮编遍历整个数据仓库。在每次迭代中我们记录了游标的方向,例如 prev(倒序遍历)

html
prev

备注: 我们不能改变游标的取值,因为这是个只读属性;应该在IDBObjectStore.openCursor方法调用的第二个参数指定游标遍历的方向;

使用游标遍历数据时,可以不需要我们指定在特定字段选择数据;我们可以直接获取所有数据,同时在每次循环迭代过程当中,我们可以通过 cursor.value.foo 获取数据,如下是一个完整的游标遍历数据的例子; IDBCursor example (view example live).

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

  objectStore.openCursor(null, "prev").onsuccess = function (event) {
    var cursor = event.target.result;
    if (cursor) {
      var listItem = document.createElement("li");
      listItem.innerHTML =
        "<strong>" +
        cursor.value.albumTitle +
        "</strong>, " +
        cursor.value.year;
      list.appendChild(listItem);

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

Specifications

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

浏览器兼容性

BCD tables only load in the browser

参考资料