IDBDatabase: createObjectStore()-Methode

Hinweis: Dieses Feature ist verfügbar in Web Workers.

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, mit dem Sie wichtige optionale Eigenschaften definieren können. Diese Eigenschaft können Sie verwenden, um einzelne Objekte im Speicher eindeutig zu identifizieren. Da es sich um einen Bezeichner handelt, sollte dieser 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 Objekt-Speichers. Beachten Sie, dass es möglich ist, einen Objekt-Speicher mit einem leeren Namen zu erstellen.

options Optional

Ein Optionsobjekt, dessen Attribute optionale Parameter der Methode sind. Es umfasst die folgenden Eigenschaften:

keyPath Optional

Der Schlüsselpfad, der vom neuen Objekt-Speicher verwendet wird. Wenn er leer ist oder nicht angegeben wird, wird der Objekt-Speicher ohne Schlüsselpfad erstellt und verwendet out-of-line keys. Sie können auch ein Array als keyPath übergeben.

autoIncrement Optional

Wenn true, hat der Objekt-Speicher einen Schlüsselgenerator. Standardwert ist false.

Rückgabewert

Ein neuer IDBObjectStore.

Ausnahmen

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

InvalidStateError DOMException

Wird ausgelöst, wenn die Methode nicht aus einer versionchange-Transaktionsrückruf aufgerufen wurde.

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). In Firefox vor Version 41 wurde in diesem Fall ebenfalls ein InvalidStateError ausgelöst, was irreführend war; dies wurde nun behoben (siehe Firefox-Fehler 1176165).

ConstraintError DOMException

Wird ausgelöst, wenn ein Objekt-Speicher mit dem angegebenen Namen (basierend auf einem Groß-/Kleinschreibvergleich) 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, das einen leeren String enthält.

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