Библиотека idb-keyval предоставляет
упрощённый интерфейс для работы с IndexedDB, позволяя сохранять,
извлекать и удалять данные с минимальным количеством кода. Операция
values является одной из ключевых функций для получения
всех значений, хранящихся в хранилище, без необходимости извлекать
каждый ключ по отдельности.
valuesasync/await или промисы.Store.Пример синтаксиса для дефолтного хранилища:
import { values } from 'idb-keyval';
async function getAllValues() {
const allValues = [];
for await (const value of values()) {
allValues.push(value);
}
return allValues;
}
getAllValues().then(console.log);
Метод values возвращает асинхронный
итератор, что позволяет эффективно обрабатывать большие объёмы
данных. Асинхронный итератор гарантирует, что получение значений будет
происходить по мере их загрузки из IndexedDB, не блокируя основной
поток.
Пример использования с циклом for await:
import { values } from 'idb-keyval';
(async () => {
for await (const value of values()) {
console.log(value);
}
})();
Использование асинхронного итератора предпочтительно для больших коллекций, поскольку не требует загрузки всех данных в память сразу.
Библиотека позволяет создавать собственные экземпляры хранилища с указанием имени базы и объекта хранилища:
import { Store, values } from 'idb-keyval';
const customStore = new Store('my-database', 'my-store');
(async () => {
for await (const value of values(customStore)) {
console.log(value);
}
})();
Такой подход удобен для разделения данных по разным областям приложения, например, кэширование пользовательских настроек отдельно от основной информации.
valuesasync/await делает код чистым и читаемым.for await с условными операторами.import { values } from 'idb-keyval';
async function getArrayOfValues() {
return await Promise.all(values());
}
values совместима со всеми методами
библиотеки: set, get, del,
clear, что позволяет строить полноценный CRUD-код на
IndexedDB с минимальными усилиями.Сохранение и последующее извлечение настроек пользователя:
import { set, values } from 'idb-keyval';
await set('theme', 'dark');
await set('language', 'ru');
const userSettings = [];
for await (const value of values()) {
userSettings.push(value);
}
console.log(userSettings); // ["dark", "ru"]
Кэширование данных API:
import { set, values } from 'idb-keyval';
async function cacheApiData(dataArray) {
for (const [id, data] of Object.entries(dataArray)) {
await set(id, data);
}
}
async function readCachedData() {
const cached = [];
for await (const item of values()) {
cached.push(item);
}
return cached;
}
values обеспечивает удобное получение
всех значений из IndexedDB.idb-keyval,
обеспечивая полный контроль над хранилищем данных.Использование values упрощает работу с IndexedDB,
позволяя сосредоточиться на логике приложения, а не на низкоуровневых
операциях с базой данных.