Библиотека Idb-keyval предоставляет простой и удобный интерфейс для работы с IndexedDB в браузере, скрывая сложность асинхронных транзакций и схем базы данных. Она идеально подходит для хранения примитивных типов данных, таких как строки, числа и булевы значения, обеспечивая быстрый доступ и минимальное количество кода.
Все операции в Idb-keyval асинхронные и возвращают
Promise, что позволяет использовать
async/await для последовательного и чистого кода.
import { get, set, del, clear, keys } from 'idb-keyval';
Строки — один из самых распространённых типов данных для локального
хранения. В Idb-keyval строка может быть сохранена под уникальным ключом
и считана с использованием простых функций set и
get.
await set('username', 'alex');
const username = await get('username');
console.log(username); // 'alex'
Числовые значения также поддерживаются напрямую. Это может быть полезно для счетчиков, рейтингов или временных меток.
await set('highScore', 2500);
const highScore = await get('highScore');
console.log(highScore); // 2500
Особенности работы с числами:
Number, поддерживаются целые и
дробные значения.0.get с последующим set.const currentCount = await get('visits') || 0;
await set('visits', currentCount + 1);
Булевы значения (true/false) легко
сохраняются и извлекаются, что позволяет хранить флаги, переключатели
или состояния интерфейса.
await set('darkMode', true);
const darkMode = await get('darkMode');
console.log(darkMode); // true
Особенности:
Для управления хранилищем примитивов используются функции
del и clear.
await del('username'); // удаляет только ключ 'username'
await clear(); // очищает всё хранилище
del(key) удаляет конкретное значение по ключу.clear() очищает полностью все пары ключ-значение, что
полезно для сброса состояния приложения.Функция keys() возвращает массив всех ключей, что
позволяет работать с набором данных динамически.
await set('a', 1);
await set('b', 2);
const allKeys = await keys();
console.log(allKeys); // ['a', 'b']
get для выборочной загрузки
данных.Idb-keyval обеспечивает прозрачное хранение примитивов без необходимости сериализации вручную. Преимущество библиотеки в том, что она автоматически управляет транзакциями и поддерживает стандартные браузеры, что делает работу с IndexedDB максимально простой и предсказуемой.
await set('username', 'alex');
await set('highScore', 5000);
await set('darkMode', false);
const username = await get('username'); // 'alex'
const highScore = await get('highScore'); // 5000
const darkMode = await get('darkMode'); // false
if (!darkMode) {
await set('darkMode', true);
}
const keysList = await keys(); // ['username', 'highScore', 'darkMode']
Этот пример демонстрирует хранение и изменение строк, чисел и булевых значений в одном хранилище, показывая гибкость Idb-keyval для примитивов.