IDBKeyRange
Hinweis: Dieses Feature ist verfügbar in Web Workers.
Die IDBKeyRange
-Schnittstelle der IndexedDB API repräsentiert ein kontinuierliches Intervall über einen Datentyp, der für Schlüssel verwendet wird. Datensätze können von IDBObjectStore
- und IDBIndex
-Objekten mittels Schlüsseln oder einem Schlüsselspektrum abgerufen werden. Sie können den Bereich durch untere und obere Grenzen einschränken. Zum Beispiel können Sie über alle Werte eines Schlüssels im Wertebereich A–Z iterieren.
Ein Schlüsselspektrum kann ein einzelner Wert oder ein Bereich mit oberen und unteren Grenzen oder Endpunkten sein. Wenn das Schlüsselspektrum sowohl obere als auch untere Grenzen hat, dann ist es begrenzt; wenn es keine Grenzen hat, ist es unbegrenzt. Ein begrenztes Schlüsselspektrum kann entweder offen sein (die Endpunkte sind ausgeschlossen) oder geschlossen (die Endpunkte sind eingeschlossen). Um alle Schlüssel innerhalb eines bestimmten Bereichs abzurufen, können Sie die folgenden Codestücke verwenden:
Bereich | Code |
---|---|
Alle Schlüssel ≥ x | IDBKeyRange.lowerBound(x) |
Alle Schlüssel > x | IDBKeyRange.lowerBound(x, true) |
Alle Schlüssel ≤ y | IDBKeyRange.upperBound(y) |
Alle Schlüssel < y | IDBKeyRange.upperBound(y, true) |
Alle Schlüssel ≥ x && ≤ y | IDBKeyRange.bound(x, y) |
Alle Schlüssel > x &&< y | IDBKeyRange.bound(x, y, true, true) |
Alle Schlüssel > x && ≤ y | IDBKeyRange.bound(x, y, true, false) |
Alle Schlüssel ≥ x &&< y | IDBKeyRange.bound(x, y, false, true) |
Der Schlüssel = z | IDBKeyRange.only(z) |
Ein Schlüssel befindet sich in einem Schlüsselspektrum, wenn die folgenden Bedingungen wahr sind:
-
Der untere Wert des Schlüsselspektrums ist einer der folgenden:
undefined
- Kleiner als der Schlüsselwert
- Gleich dem Schlüsselwert, wenn
lowerOpen
false
ist.
-
Der obere Wert des Schlüsselspektrums ist einer der folgenden:
undefined
- Größer als der Schlüsselwert
- Gleich dem Schlüsselwert, wenn
upperOpen
false
ist.
Instanz-Eigenschaften
IDBKeyRange.lower
Nur lesbar-
Untere Grenze des Schlüsselspektrums.
IDBKeyRange.upper
Nur lesbar-
Obere Grenze des Schlüsselspektrums.
IDBKeyRange.lowerOpen
Nur lesbar-
Gibt false zurück, wenn der untere Grenzwert im Schlüsselspektrum enthalten ist.
IDBKeyRange.upperOpen
Nur lesbar-
Gibt false zurück, wenn der obere Grenzwert im Schlüsselspektrum enthalten ist.
Statische Methoden
IDBKeyRange.bound()
-
Erstellt ein neues Schlüsselspektrum mit oberen und unteren Grenzen.
IDBKeyRange.only()
-
Erstellt ein neues Schlüsselspektrum, das einen einzelnen Wert enthält.
IDBKeyRange.lowerBound()
-
Erstellt ein neues Schlüsselspektrum mit nur einer unteren Grenze.
IDBKeyRange.upperBound()
-
Erstellt ein neues Schlüsselspektrum mit einer oberen Grenze.
Instanz-Methoden
IDBKeyRange.includes()
-
Gibt einen booleschen Wert zurück, der anzeigt, ob ein bestimmter Schlüssel innerhalb des Schlüsselspektrums liegt.
Beispiele
Das folgende Beispiel veranschaulicht, wie Sie ein Schlüsselspektrum verwenden würden. Hier deklarieren wir ein keyRangeValue
als einen Bereich zwischen den Werten "A"
und "F"
. Wir öffnen eine Transaktion (mit IDBTransaction
) und einen Objektspeicher und öffnen einen Cursor mit IDBObjectStore.openCursor
, wobei keyRangeValue
als optionales Schlüsselspektrum deklariert wird. Dies bedeutet, dass der Cursor nur Datensätze mit Schlüsseln innerhalb dieses Bereichs abruft. Dieser Bereich schließt die Werte "A"
und "F"
ein, da wir nicht deklariert haben, dass sie offene Grenzen sein sollen.
Wenn wir IDBKeyRange.bound("A", "F", true, true);
verwenden würden, dann würde der Bereich "A"
und "F"
nicht einschließen, nur die Werte dazwischen.
Hinweis: Ein vollständigeres Beispiel, das Ihnen ermöglicht, mit dem Schlüsselspektrum zu experimentieren, finden Sie in unserem IDBKeyRange-Beispiel-Repo (sehen Sie sich das Beispiel auch live an.)
function displayData() {
const keyRangeValue = IDBKeyRange.bound("A", "F");
const transaction = db.transaction(["fThings"], "readonly");
const objectStore = transaction.objectStore("fThings");
objectStore.openCursor(keyRangeValue).onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
const listItem = document.createElement("li");
listItem.textContent = `${cursor.value.fThing}, ${cursor.value.fRating}`;
list.appendChild(listItem);
cursor.continue();
} else {
console.log("Entries all displayed.");
}
};
}
Spezifikationen
Specification |
---|
Indexed Database API 3.0 # keyrange |
Browser-Kompatibilität
BCD tables only load in the browser
Siehe auch
- Verwendung von IndexedDB
- Transaktionen starten:
IDBDatabase
- Verwendung von Transaktionen:
IDBTransaction
- Abrufen und Ändern Ihrer Daten:
IDBObjectStore
- Verwendung von Cursors:
IDBCursor
- Referenzbeispiel: To-do-Benachrichtigungen (Beispiel live ansehen).