IDBDatabase: Methode createObjectStore()

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.

Die createObjectStore()-Methode der IDBDatabase-Schnittstelle erstellt und gibt einen neuen IDBObjectStore zurück.

Die Methode erwartet den Namen des Stores sowie ein Parameterobjekt, das es Ihnen ermöglicht, wichtige optionale Eigenschaften zu definieren. Sie können die Eigenschaft verwenden, um einzelne Objekte im Store eindeutig zu identifizieren. Da die Eigenschaft ein Identifikator ist, sollte sie für jedes Objekt eindeutig sein und jedes Objekt sollte diese Eigenschaft aufweisen.

Diese Methode kann nur innerhalb einer versionchange-Transaktion aufgerufen werden.

Syntax

js
createObjectStore(name)
createObjectStore(name, options)

Parameter

name

Der Name des zu erstellenden neuen Object Stores. Beachten Sie, dass es möglich ist, einen Object Store mit einem leeren Namen zu erstellen.

options Optional

Ein Optionsobjekt, dessen Attribute optionale Parameter für die Methode sind. Es umfasst folgende Eigenschaften:

keyPath Optional

Der Key-Pfad, der vom neuen Object Store verwendet werden soll. Wenn nicht angegeben oder leer, wird der Object Store ohne einen Key-Pfad erstellt und verwendet out-of-line keys. Sie können auch ein Array als keyPath übergeben.

autoIncrement Optional

Wenn true, hat der Object Store einen Key-Generator. Standardmäßig ist dieser false.

Rückgabewert

Ein neuer IDBObjectStore.

Ausnahmen

Diese Methode kann eine DOMException mit einem name der folgenden Typen auslösen:

ConstraintError DOMException

Wird ausgelöst, wenn ein Object Store mit dem angegebenen Namen (basierend auf einem Groß-/Kleinschreibungssensitiven Vergleich) bereits in der verbundenen Datenbank existiert.

InvalidAccessError DOMException

Wird ausgelöst, wenn autoIncrement auf true gesetzt ist und keyPath entweder ein leerer String oder ein Array ist.

InvalidStateError DOMException

Wird ausgelöst, wenn die Methode nicht aus einem versionchange-Transaktions-Callback aufgerufen wurde.

SyntaxError

Wird ausgelöst, wenn die keyPath-Option einen ungültigen Key-Pfad enthält.

TransactionInactiveError DOMException

Wird ausgelöst, wenn eine Anfrage an eine Quelldatenbank gestellt wird, die nicht existiert (zum Beispiel, wenn die Datenbank gelöscht oder entfernt wurde) oder wenn die zugehörige Upgrade-Transaktion abgeschlossen ist oder eine Anfrage bearbeitet.

Beispiele

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

// This handler is called when a new version of the database
// is created, either when one has not been created before
// or when a new version number is submitted by calling
// window.indexedDB.open().
// This handler is only supported in recent browsers.
request.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.";
};

Spezifikationen

Specification
Indexed Database API 3.0
# ref-for-dom-idbdatabase-createobjectstore①

Browser-Kompatibilität

BCD tables only load in the browser

Siehe auch