IDBObjectStore
Baseline
Widely available
*
This feature is well established and works across many devices and browser versions. It’s been available across browsers since Juli 2015.
* Some parts of this feature may have varying levels of support.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Das IDBObjectStore-Interface der IndexedDB API repräsentiert einen Objekt-Store in einer Datenbank. Datensätze in einem Objekt-Store werden entsprechend ihrer Schlüssel sortiert. Diese Sortierung ermöglicht schnelles Einfügen, Abrufen und geordnete Entnahme.
Instanz-Eigenschaften
IDBObjectStore.indexNamesSchreibgeschützt-
Eine Liste der Namen von Indizes auf Objekten in diesem Objekt-Store.
IDBObjectStore.keyPathSchreibgeschützt-
Der Schlüsselpfad dieses Objekt-Stores. Wenn dieses Attribut
nullist, muss die Anwendung bei jeder Änderungsoperation einen Schlüssel bereitstellen. IDBObjectStore.name-
Der Name dieses Objekt-Stores.
IDBObjectStore.transactionSchreibgeschützt-
Das
IDBTransaction-Objekt, zu dem dieser Objekt-Store gehört. IDBObjectStore.autoIncrementSchreibgeschützt-
Der Wert der Auto-Inkrement-Flagge für diesen Objekt-Store.
Instanz-Methoden
IDBObjectStore.add()-
Gibt ein
IDBRequest-Objekt zurück und erstellt in einem separaten Thread einen strukturierten Klon desvalueund speichert den geklonten Wert im Objekt-Store. Dies dient dem Hinzufügen neuer Datensätze zu einem Objekt-Store. IDBObjectStore.clear()-
Erstellt und gibt sofort ein
IDBRequest-Objekt zurück und leert diesen Objekt-Store in einem separaten Thread. Dies dient dem Löschen aller aktuellen Datensätze aus einem Objekt-Store. 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 oderIDBKeyRangeentsprechen. Wenn keine Argumente angegeben werden, wird die Gesamtanzahl der Datensätze im Store 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 Store ausgewählte Objekt anhand des angegebenen Schlüssels. Dies dient dem Löschen einzelner Datensätze aus einem Objekt-Store. 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 liefert in einem separaten Thread das im Store ausgewählte Objekt anhand des angegebenen Schlüssels. Dies dient dem Abrufen spezifischer Datensätze aus einem Objekt-Store. IDBObjectStore.getKey()-
Gibt ein
IDBRequest-Objekt zurück und holt und liefert in einem separaten Thread den Datensatzschlüssel für das Objekt im Objekt-Store, das dem angegebenen Parameter entspricht. IDBObjectStore.getAll()-
Gibt ein
IDBRequest-Objekt zurück und holt in einem separaten Thread alle Objekte im Objekt-Store ab, die dem angegebenen Parameter entsprechen, oder alle Objekte im Store, wenn keine Parameter angegeben werden. IDBObjectStore.getAllKeys()-
Gibt ein
IDBRequest-Objekt zurück und holt in einem separaten Thread die Datensatzschlüssel für alle Objekte im Objekt-Store ab, die dem angegebenen Parameter entsprechen, oder alle Objekte im Store, wenn keine Parameter angegeben werden. IDBObjectStore.getAllRecords()Experimentell-
Gibt ein
IDBRequest-Objekt zurück und findet in einem separaten Thread alle übereinstimmenden Datensätze im Objekt-Store (einschließlich Primärschlüssel und Werte), die dem angegebenen Schlüssel entsprechen oder im Bereich liegen, wennkeyeinIDBKeyRangeist. IDBObjectStore.index()-
Öffnet einen Index aus diesem Objekt-Store, nach dem er beispielsweise verwendet werden kann, um eine Reihe von nach diesem Index sortierten Datensätzen mit einem Cursor zurückzugeben.
IDBObjectStore.openCursor()-
Gibt ein
IDBRequest-Objekt zurück und gibt in einem separaten Thread ein neuesIDBCursorWithValue-Objekt zurück. Verwendet zum Durchlaufen eines Objekt-Stores nach Primärschlüssel mit einem Cursor. IDBObjectStore.openKeyCursor()-
Gibt ein
IDBRequest-Objekt zurück und gibt in einem separaten Thread ein neuesIDBCursorzurück. Verwendet zum Durchlaufen eines Objekt-Stores mit einem Schlüssel. IDBObjectStore.put()-
Gibt ein
IDBRequest-Objekt zurück und erstellt in einem separaten Thread einen strukturierten Klon desvalueund speichert den geklonten Wert im Objekt-Store. Dies dient dem Aktualisieren bestehender Datensätze in einem Objekt-Store, wenn der Modus der Transaktionreadwriteist.
Beispiel
Dieses Beispiel zeigt eine Vielzahl unterschiedlicher Anwendungen von Objekt-Stores, vom Aktualisieren der Datenstruktur mit IDBObjectStore.createIndex innerhalb einer onupgradeneeded-Funktion bis hin zum Hinzufügen eines neuen Elements zu unserem Objekt-Store mit IDBObjectStore.add. Für ein vollständiges Arbeitsbeispiel, sehen Sie unsere To-do Notifications App (Beispiel live ansehen).
// 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
Loading…
Siehe auch
- Verwendung von IndexedDB
- Starten von Transaktionen:
IDBDatabase - Verwenden von Transaktionen:
IDBTransaction - Festlegen eines Bereichs von Schlüsseln:
IDBKeyRange - Verwenden von Cursors:
IDBCursor - Beispielreferenz: To-do Notifications (Beispiel live ansehen).