Библиотека idb-keyval предоставляет удобный интерфейс
для работы с IndexedDB в браузере. Метод get служит для
извлечения значения по указанному ключу. Он возвращает промис, который
разрешается значением, ассоциированным с ключом, либо
undefined, если ключ отсутствует.
import { get } from 'idb-keyval';
get('username').then(value => {
console.log(value);
});
В этом примере ключ 'username' используется для
получения данных из хранилища по умолчанию.
Метод get имеет следующий базовый синтаксис:
get(key, store);
Параметры:
key — обязательный. Ключ для поиска значения. Может
быть строкой, числом или любым другим сериализуемым объектом.store — необязательный. Объект хранилища
(IDBObjectStore), используемый при чтении данных. Если не
указан, используется стандартное хранилище default.Так как get возвращает промис, данные извлекаются
асинхронно. Для работы с результатом можно использовать:
Метод .then()
get('settings').then(settings => {
console.log(settings);
});
Асинхронная функция с await
async function loadSettings() {
const settings = await get('settings');
console.log(settings);
}
loadSettings();
Асинхронный подход позволяет писать код в линейном стиле, избегая вложенных коллбэков.
Если ключ отсутствует в хранилище, промис возвращает
undefined. Это важно учитывать при условной обработке
данных:
get('theme').then(value => {
if (value === undefined) {
console.log('Ключ не найден, использовать настройки по умолчанию');
} else {
console.log('Тема:', value);
}
});
Это позволяет безопасно применять значения по умолчанию без генерации ошибок.
idb-keyval позволяет создавать отдельные хранилища для
разных наборов данных:
import { get, Store } from 'idb-keyval';
const userStore = new Store('user-database', 'user-store');
get('username', userStore).then(username => {
console.log(username);
});
Создание собственного объекта Store полезно для
разделения данных по категориям или функциональности приложения.
idb-keyval поддерживает большинство сериализуемых
структур:
const userProfile = { name: 'Alice', age: 30 };
await set('profile', userProfile);
const profile = await get('profile');
console.log(profile.name); // Alice
Все данные сохраняются в IndexedDB и автоматически сериализуются/десериализуются.
Хотя idb-keyval упрощает работу с IndexedDB, ошибки всё
же возможны. Метод get может быть отклонён при проблемах с
доступом к базе или нарушением структуры:
get('someKey').catch(error => {
console.error('Ошибка при чтении значения:', error);
});
Рекомендуется всегда предусматривать блок .catch() или
конструкцию try/catch при использовании
await.
Для повышения производительности:
get с другими методами (set,
del) в транзакциях при необходимости атомарных
операций.Метод get хорошо сочетается с:
set(key, value) — для записи данных перед чтениемdel(key) — для удаления ключейupd ate(key, updater) — для обновления значения с
использованием функцииПример комбинации:
import { get, se t, upd ate } from 'idb-keyval';
async function incrementCounter() {
const count = await get('counter') || 0;
await se t('counter', count + 1);
}
Такой подход обеспечивает удобное управление состоянием приложения через простые и понятные операции.
Метод get является базовым инструментом для асинхронного
доступа к хранилищу IndexedDB через idb-keyval. Его
простота и поддержка промисов делают код чистым, а использование
нестандартных хранилищ и сложных типов данных позволяет строить гибкую
архитектуру хранения.