IDBDatabase: createObjectStore() Methode

Baseline Widely available

This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.

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 nimmt den Namen des Speichers sowie ein Parameterobjekt entgegen, das es Ihnen ermöglicht, wichtige optionale Eigenschaften zu definieren. Sie können die Eigenschaft verwenden, um einzelne Objekte im Speicher eindeutig zu identifizieren. Da die Eigenschaft ein Identifikator ist, sollte sie für jedes Objekt einzigartig sein, und jedes Objekt sollte diese Eigenschaft haben.

Diese Methode kann nur innerhalb einer versionchange Transaktion aufgerufen werden.

Syntax

js
createObjectStore(name)
createObjectStore(name, options)

Parameter

name

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

options Optional

Ein Optionsobjekt, dessen Attribute optionale Parameter für die Methode sind. Es enthält die folgenden Eigenschaften:

keyPath Optional

Der Schlüsselpfad, der vom neuen Objektspeicher verwendet werden soll. Wenn leer oder nicht angegeben, wird der Objektspeicher ohne Schlüsselpfad erstellt und verwendet außerhalb liegende Schlüssel. Sie können auch ein Array als keyPath übergeben.

autoIncrement Optional

Wenn true, hat der Objektspeicher einen Schlüsselerzeuger. Standardmäßig ist 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 Objektspeicher mit dem angegebenen Namen (basierend auf einem groß- und 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 Schlüsselpfad enthält.

TransactionInactiveError DOMException

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

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

Siehe auch