IDBIndex.objectStore

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.

La propriètè objectStore de l'interface IDBIndex renvoie un accès au magasin d'objet que référence l'index.

Note : Cette fonctionnalité est disponible via les Web Workers.

Syntaxe

js
var indexObjectStore = myIndex.objectStore;

Valeur

Example

Dans l'exemple suivant on ouvre une transaction puis un magasin d'objet et enfin l'index lName.

Le magasin d'objet référencé par l'index est afficher sur la console, quelque chose ressemblant à:

js
IDBObjectStore { name: "contactsList", keyPath: "id", indexNames: DOMStringList[7], transaction: IDBTransaction, autoIncrement: false }

Finalement, On itère sur tous les enregistrements pour en insérer les données dans un tableau HTML. En utilisant la méthode IDBIndex.openCursor qui travaille de la même façon que la méthode IDBObjectStore.openCursor de l'accès au magasin d'objet sauf que les enregistrements sont renvoyés dans l'ordre de l'index et non celui du magasin d'objet.

js
function displayDataByIndex() {
  tableEntry.innerHTML = "";

  //ouvre un transaction
  var transaction = db.transaction(["contactsList"], "readonly");
  //accés au magasin d'objet
  var objectStore = transaction.objectStore("contactsList");

  //on récupère l'index
  var myIndex = objectStore.index("lName");
  //on affiche le magasin d'objet référencé locale sur la console
  console.log(myIndex.objectStore);

  //un curseur qui itère sur l'index
  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("Tous les enregistrements ont été affichés.");
    }
  };
}

Note : Pour un exemple de travail complet, voir notre To-do Notifications app (view example live).

Spécifications

Specification
Indexed Database API 3.0
# ref-for-dom-idbindex-objectstore①

Compatibilité des navigateurs

BCD tables only load in the browser

Voir aussi