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.

メモ: この機能はウェブワーカー内で利用可能です。

directionIDBCursor インターフェイスの読み取り専用プロパティで、(たとえば IDBObjectStore.openCursor で設定した) カーソルの走査の方向を表す文字列です。取りうる値は、以下のの節を参照してください。

カーソルがデータを走査する方向を表す文字列です。以下の値を取りえます。

next

この方向は、カーソルを走査対象の先頭で開きます。

nextunique

この方向は、カーソルを走査対象の先頭で開きます。重複した値を持つキーについては、最初に訪れた(先頭に最も近い)レコードのみを返します。

prev

この方向は、カーソルを走査対象の末尾で開きます。

prevunique

この方向は、カーソルを走査対象の末尾で開きます。重複した値を持つキーについては、最初に訪れた(末尾に最も近い)レコードのみを返します。

このシンプルな断片では、トランザクションを作成し、オブジェクトストアを取得し、カーソルを使用してオブジェクトストア内の全レコードを走査します。それぞれの繰り返しにおいて、カーソルの方向を記録します。

メモ: direction プロパティは読み取り専用なので、このプロパティを用いてカーソルが動く方向を変えることはできません。カーソルが動く方向は、IDBObjectStore.openCursor の第 2 引数で設定します。

カーソルを使う場合、データをキーで選択する必要はなく、単に全て取得できます。また、ループ中のそれぞれの繰り返しにおいて、カーソルオブジェクトが指している現在のレコードからデータを cursor.value.foo のようにして取得できます。動く例全体は、IDBCursor example を参照してください。(動く例を見る)

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("エントリーを逆向きに表示しました。");
    }
  };
}

仕様書

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

ブラウザーの互換性

Report problems with this compatibility data on GitHub
desktopmobile
Chrome
Edge
Firefox
Opera
Safari
Chrome Android
Firefox for Android
Opera Android
Safari on iOS
Samsung Internet
WebView Android
WebView on iOS
direction

Legend

Tip: you can click/tap on a cell for more information.

Full support
Full support

関連情報