IDBObjectStore

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.

Hinweis: Diese Funktion ist in Web Workers verfügbar.

Das IDBObjectStore-Interface der IndexedDB API repräsentiert einen Objektspeicher in einer Datenbank. Datensätze innerhalb eines Objektspeichers werden nach ihren Schlüsseln sortiert. Diese Sortierung ermöglicht schnelles Einfügen, Nachschlagen und geordnete Abfrage.

Instanz-Eigenschaften

IDBObjectStore.indexNames Schreibgeschützt

Eine Liste der Namen von Indizes für Objekte in diesem Objektspeicher.

IDBObjectStore.keyPath Schreibgeschützt

Der Schlüsselpfad dieses Objektspeichers. Wenn dieses Attribut null ist, muss die Anwendung für jede Modifikationsoperation einen Schlüssel bereitstellen.

IDBObjectStore.name

Der Name dieses Objektspeichers.

IDBObjectStore.transaction Schreibgeschützt

Das IDBTransaction-Objekt, zu dem dieser Objektspeicher gehört.

IDBObjectStore.autoIncrement Schreibgeschützt

Der Wert der Auto-Inkrement-Flagge für diesen Objektspeicher.

Instanz-Methoden

IDBObjectStore.add()

Gibt ein IDBRequest-Objekt zurück und erstellt in einem separaten Thread einen strukturierten Klon des value und speichert den geklonten Wert im Objektspeicher. Dies dient zum Hinzufügen neuer Datensätze zu einem Objektspeicher.

IDBObjectStore.clear()

Erstellt und gibt sofort ein IDBRequest-Objekt zurück und löscht diesen Objektspeicher in einem separaten Thread. Dies dient zum Löschen aller aktuellen Datensätze aus einem Objektspeicher.

IDBObjectStore.count()

Gibt ein IDBRequest-Objekt zurück und gibt in einem separaten Thread die Gesamtzahl der Datensätze zurück, die dem angegebenen Schlüssel oder IDBKeyRange entsprechen. Wenn keine Argumente angegeben sind, wird die Gesamtzahl der Datensätze im Speicher zurückgegeben.

IDBObjectStore.createIndex()

Erstellt einen neuen Index während eines Versions-Upgrades und gibt ein neues IDBIndex-Objekt in der verbundenen Datenbank zurück.

IDBObjectStore.delete()

Gibt ein IDBRequest-Objekt zurück und löscht in einem separaten Thread das im Speicher ausgewählte Objekt anhand des angegebenen Schlüssels. Dies dient zum Löschen einzelner Datensätze aus einem Objektspeicher.

IDBObjectStore.deleteIndex()

Zerstört den angegebenen Index in der verbundenen Datenbank, verwendet während eines Versions-Upgrades.

IDBObjectStore.get()

Gibt ein IDBRequest-Objekt zurück und gibt in einem separaten Thread das im Speicher ausgewählte Objekt basierend auf dem angegebenen Schlüssel zurück. Dies dient dem Abrufen spezifischer Datensätze aus einem Objektspeicher.

IDBObjectStore.getKey()

Gibt ein IDBRequest-Objekt zurück und ruft in einem separaten Thread den Datensatzschlüssel für das Objekt im Speicherspeicher ab, das dem angegebenen Parameter entspricht.

IDBObjectStore.getAll()

Gibt ein IDBRequest-Objekt zurück, das alle Objekte im Objektspeicher abruft, die dem angegebenen Parameter entsprechen, oder alle Objekte im Speicher, wenn keine Parameter angegeben sind.

IDBObjectStore.getAllKeys()

Gibt ein IDBRequest-Objekt zurück, das die Datensatzschlüssel für alle Objekte im Objektspeicher abruft, die dem angegebenen Parameter entsprechen, oder alle Objekte im Speicher, wenn keine Parameter angegeben sind.

IDBObjectStore.index()

Öffnet einen Index aus diesem Objektspeicher, nach dessen Öffnung er beispielsweise verwendet werden kann, um mit Hilfe eines Cursors eine Sequenz von Datensätzen zu sortieren.

IDBObjectStore.openCursor()

Gibt ein IDBRequest-Objekt zurück und gibt in einem separaten Thread ein neues IDBCursorWithValue-Objekt zurück. Wird für das Durchlaufen eines Objektspeichers nach Primärschlüssel mit einem Cursor verwendet.

IDBObjectStore.openKeyCursor()

Gibt ein IDBRequest-Objekt zurück und gibt in einem separaten Thread ein neues IDBCursor zurück. Wird für das Durchlaufen eines Objektspeichers mit einem Schlüssel verwendet.

IDBObjectStore.put()

Gibt ein IDBRequest-Objekt zurück und erstellt in einem separaten Thread einen strukturierten Klon des value und speichert den geklonten Wert im Objektspeicher. Dies dient zum Aktualisieren bestehender Datensätze in einem Objektspeicher, wenn der Modus der Transaktion readwrite ist.

Beispiel

Dieses Beispiel zeigt eine Vielzahl unterschiedlicher Anwendungen von Objektspeichern, vom Aktualisieren der Datenstruktur mit IDBObjectStore.createIndex innerhalb einer onupgradeneeded-Funktion bis hin zum Hinzufügen eines neuen Elements zu unserem Objektspeicher mit IDBObjectStore.add. Für ein vollständiges Arbeitsbeispiel siehe unsere To-do Benachrichtigungen-App (Beispiel live ansehen).

js
// Let us open our database
const DBOpenRequest = window.indexedDB.open("toDoList", 4);

DBOpenRequest.onsuccess = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Database initialized.";

  // store the result of opening the database in db.
  db = DBOpenRequest.result;
};

// This event handles the event whereby a new version of
// the database needs to be created Either one has not
// been created before, or a new version number has been
// submitted via the window.indexedDB.open line above
DBOpenRequest.onupgradeneeded = (event) => {
  const db = event.target.result;

  db.onerror = (event) => {
    note.appendChild(document.createElement("li")).textContent =
      "Error loading database.";
  };

  // Create an objectStore for this database

  const objectStore = db.createObjectStore("toDoList", {
    keyPath: "taskTitle",
  });

  // define what data items the objectStore will contain

  objectStore.createIndex("hours", "hours", { unique: false });
  objectStore.createIndex("minutes", "minutes", { unique: false });
  objectStore.createIndex("day", "day", { unique: false });
  objectStore.createIndex("month", "month", { unique: false });
  objectStore.createIndex("year", "year", { unique: false });

  objectStore.createIndex("notified", "notified", { unique: false });

  note.appendChild(document.createElement("li")).textContent =
    "Object store created.";
};

// Create a new item to add in to the object store
const newItem = [
  {
    taskTitle: "Walk dog",
    hours: 19,
    minutes: 30,
    day: 24,
    month: "December",
    year: 2013,
    notified: "no",
  },
];

// open a read/write db transaction, ready for adding the data
const transaction = db.transaction(["toDoList"], "readwrite");

// report on the success of the transaction completing, when everything is done
transaction.oncomplete = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Transaction completed.";
};

transaction.onerror = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Transaction not opened due to error. Duplicate items not allowed.";
};

// create an object store on the transaction
const objectStore = transaction.objectStore("toDoList");
// make a request to add our newItem object to the object store
const objectStoreRequest = objectStore.add(newItem[0]);

objectStoreRequest.onsuccess = (event) => {
  note.appendChild(document.createElement("li")).textContent =
    "Request successful.";
};

Spezifikationen

Specification
Indexed Database API 3.0
# object-store-interface

Browser-Kompatibilität

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
IDBObjectStore
add
autoIncrement
clear
count
createIndex
options.locale parameter
DeprecatedNon-standard
delete
deleteIndex
get
getAll
getAllKeys
getKey
index
indexNames
keyPath
name
Renaming through name setter
openCursor
openKeyCursor
put
transaction
Available in workers

Legend

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

Full support
Full support
No support
No support
Non-standard. Check cross-browser support before using.
Deprecated. Not for use in new websites.
Requires a vendor prefix or different name for use.
Has more compatibility info.

Siehe auch