IDBObjectStore
Baseline
Weitgehend verfügbar
*
Diese Funktion ist gut etabliert und funktioniert auf vielen Geräten und in vielen Browserversionen. Sie ist seit Juli 2015 browserübergreifend verfügbar.
* Einige Teile dieser Funktion werden möglicherweise unterschiedlich gut unterstützt.
Hinweis: Diese Funktion ist in Web Workers verfügbar.
Das IDBObjectStore-Interface der IndexedDB API repräsentiert einen Objektspeicher in einer Datenbank. Datensätze in einem Objektspeicher sind gemäß ihrer Schlüssel sortiert. Diese Sortierung ermöglicht schnelles Einfügen, Nachschlagen und geordnetes Abrufen.
Instanz-Eigenschaften
IDBObjectStore.indexNamesSchreibgeschützt-
Eine Liste der Namen von Indizes in Objekten in diesem Objektspeicher.
IDBObjectStore.keyPathSchreibgeschützt-
Der Schlüsselpfad dieses Objektspeichers. Wenn dieses Attribut
nullist, muss die Anwendung einen Schlüssel für jede Änderungsoperation bereitstellen. IDBObjectStore.name-
Der Name dieses Objektspeichers.
IDBObjectStore.transactionSchreibgeschützt-
Das
IDBTransaction-Objekt, zu dem dieser Objektspeicher gehört. IDBObjectStore.autoIncrementSchreibgeschützt-
Der Wert des Auto-Inkrements-Flags für diesen Objektspeicher.
Instanz-Methoden
IDBObjectStore.add()-
Gibt ein
IDBRequest-Objekt zurück und erstellt in einem separaten Thread einen strukturierten Klon desvalue, und speichert den geklonten Wert im Objektspeicher. Dies dient dazu, neue Datensätze zu einem Objektspeicher hinzuzufügen. IDBObjectStore.clear()-
Erstellt und gibt sofort ein
IDBRequest-Objekt zurück und löscht in einem separaten Thread diesen Objektspeicher. Dies dient dazu, alle aktuellen Datensätze aus einem Objektspeicher zu löschen. IDBObjectStore.count()-
Gibt ein
IDBRequest-Objekt zurück und gibt in einem separaten Thread die Gesamtanzahl der Datensätze zurück, die dem bereitgestellten Schlüssel oderIDBKeyRangeentsprechen. Wenn keine Argumente bereitgestellt werden, wird die gesamte Anzahl der Datensätze im Speicher zurückgegeben. IDBObjectStore.createIndex()-
Erstellt einen neuen Index während einer Versionsaktualisierung 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 ausgewählte Speicherelement, das durch den angegebenen Schlüssel bestimmt wird. Dies dient zum Löschen einzelner Datensätze aus einem Objektspeicher. IDBObjectStore.deleteIndex()-
Zerstört den angegebenen Index in der verbundenen Datenbank, der während einer Versionsaktualisierung verwendet wird.
IDBObjectStore.get()-
Gibt ein
IDBRequest-Objekt zurück und gibt in einem separaten Thread das Objektspeicherobjekt zurück, das durch den angegebenen Schlüssel ausgewählt wird. Dies dient zum 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 gespeicherten Objekt auf, das mit dem angegebenen Parameter übereinstimmt. IDBObjectStore.getAll()-
Gibt ein
IDBRequest-Objekt zurück und ruft in einem separaten Thread alle Objekte im Objektspeicher ab, die dem angegebenen Parameter entsprechen, oder alle Objekte im Speicher, wenn keine Parameter angegeben sind. IDBObjectStore.getAllKeys()-
Gibt ein
IDBRequest-Objekt zurück und ruft in einem separaten Thread die Datensatzschlüssel für alle Objekte im Objektspeicher ab, die dem angegebenen Parameter entsprechen, oder alle Objekte im Speicher, wenn keine Parameter angegeben sind. IDBObjectStore.getAllRecords()-
Gibt ein
IDBRequest-Objekt zurück und findet in einem separaten Thread alle übereinstimmenden Datensätze im Objektspeicher (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 Objektspeicher, danach kann er zum Beispiel verwendet werden, um eine Sequenz von Datensätzen zu sortieren, die von diesem Index zurückgegeben werden, mithilfe eines Cursors.
IDBObjectStore.openCursor()-
Gibt ein
IDBRequest-Objekt zurück und gibt in einem separaten Thread ein neuesIDBCursorWithValue-Objekt zurück. Wird zum Durchlaufen eines Objektspeichers durch Primärschlüssel mit einem Cursor verwendet. IDBObjectStore.openKeyCursor()-
Gibt ein
IDBRequest-Objekt zurück und gibt in einem separaten Thread ein neuesIDBCursor-Objekt zurück. Wird zum 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 desvalue, und speichert den geklonten Wert im Objektspeicher. Dies dient zur Aktualisierung vorhandener Datensätze in einem Objektspeicher, wenn der Modus der Transaktionreadwriteist.
Beispiel
Dieses Beispiel zeigt verschiedene Verwendungen 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 funktionsfähiges Beispiel siehe 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
| Spezifikation |
|---|
| Indexed Database API 3.0> # object-store-interface> |
Browser-Kompatibilität
Siehe auch
- Verwendung von IndexedDB
- Starten von Transaktionen:
IDBDatabase - Nutzung von Transaktionen:
IDBTransaction - Festlegen eines Schlüsselspektrums:
IDBKeyRange - Nutzung von Cursors:
IDBCursor - Referenzbeispiel: To-do Notifications (Beispiel live ansehen).