IDBИндекс: метод get()
Базовая линия Широко доступно
Эта функция хорошо отработана и работает во многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2021 года.
Примечание: Эта функция доступна в Потоках выполнения JavaScript.
Метод get() интерфейса IDBIndex возвращает объект IDBRequest, и в отдельном потоке находит значение в указанном хранилище объектов, соответствующее заданному ключу, или первое соответствующее значение, если key установлено в IDBKeyRange.
Если значение найдено, то его структурированный клон создаётся и устанавливается в качестве result объекта запроса: это возвращает запись, связанную с ключом.
Синтаксис
get() get(key)
Параметры
keyНеобязательно-
Ключ или
IDBKeyRange, который идентифицирует запись, подлежащую извлечению. Если это значение равно null или отсутствует, браузер будет использовать неопределённый диапазон ключей.
Возвращаемое значение
Объект IDBRequest, на котором будут срабатывать последующие события, связанные с этой операцией.
Если операция выполнена успешно, значение свойства result запроса — значение первой записи, соответствующей заданному ключу или диапазону ключей.
Исключения
Этот метод может вызывать DOMException одного из следующих типов:
-
TransactionInactiveErrorDOMException -
Выбрасывается, если транзакция данного
IDBIndexнеактивна. -
DataErrorDOMException -
Выбрасывается, если предоставленный ключ или диапазон ключей содержит недопустимый ключ.
-
InvalidStateErrorDOMException -
Выбрасывается, если
IDBIndexбыл удалён.
Примеры
В следующем примере мы открываем транзакцию и хранилище объектов, затем получаем индекс lName из простой базы данных контактов. Затем мы открываем базовый курсор на индексе с помощью IDBIndex.openCursor — это работает так же, как открытие курсора непосредственно на ObjectStore с помощью IDBObjectStore.openCursor, за исключением того, что возвращаемые записи сортируются по индексу, а не по первичному ключу.
Затем используется myIndex.get('Bungle') для извлечения записи с lName Bungle, и результат этого запроса регистрируется в консоли, когда возвращается функция обратного вызова успеха.
Наконец, мы проходим по каждой записи и вставляем данные в таблицу HTML. Для получения полных примеров см. нашу демо-репозиторий IndexedDB-examples (посмотреть пример в браузере).
function displayDataByIndex() {
tableEntry.textContent = "";
const transaction = db.transaction(["contactsList"], "readonly");
const objectStore = transaction.objectStore("contactsList");
const myIndex = objectStore.index("lName");
const getRequest = myIndex.get("Bungle");
getRequest.onsuccess = () => {
console.log(getRequest.result);
};
myIndex.openCursor().onsuccess = (event) => {
const cursor = event.target.result;
if (cursor) {
const tableRow = document.createElement("tr");
for (const cell of [
cursor.value.id,
cursor.value.lName,
cursor.value.fName,
cursor.value.jTitle,
cursor.value.company,
cursor.value.eMail,
cursor.value.phone,
cursor.value.age,
]) {
const tableCell = document.createElement("td");
tableCell.textContent = cell;
tableRow.appendChild(tableCell);
}
tableEntry.appendChild(tableRow);
cursor.continue();
} else {
console.log("Entries all displayed.");
}
};
}
Спецификации
| Спецификация |
|---|
| Indexed Database API 3.0 # ref-for-dom-idbindex-get① |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
get |
23 | 12 | 10 | 15 | 8 | 25 | 22 | 14 | 8 | 1.5 | 4.4 |
См. также
- Использование IndexedDB
- Запуск транзакций:
IDBDatabase - Использование транзакций:
IDBTransaction - Указание диапазона ключей:
IDBKeyRange - Получение и изменение данных:
IDBObjectStore - Использование курсоров:
IDBCursor - Пример ссылки: Уведомления о задачах (посмотреть пример в браузере).
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/IDBIndex/get