IDBCursor.direction

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

注: この機能は Web Worker 内で利用可能です

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

next

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

nextunique

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

prev

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

prevunique

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

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

prev

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

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

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①

ブラウザーの互換性

BCD tables only load in the browser

関連情報