Ответ
IndexedDB — это низкоуровневая NoSQL база данных в браузере для хранения больших объемов структурированных данных. Работал с ним для оффлайн-доступа к данным, кэширования и сложных запросов.
Основные моменты:
- Открытие базы через
indexedDB.open(name, version)
с обработкойonupgradeneeded
для создания схемы. - Работа с транзакциями (
readwrite
,readonly
) и хранилищами (objectStore
). - Использование курсоров для итерации по данным и индексов для быстрого поиска.
Пример:
const request = indexedDB.open('myDB', 1);
request.onupgradeneeded = (e) => {
const db = e.target.result;
const store = db.createObjectStore('users', { keyPath: 'id' });
store.createIndex('name', 'name', { unique: false });
};
Сложности:
- Асинхронность и event-based API.
- Обработка ошибок и версионирование.
Для удобства использовал библиотеки вроде idb
или Dexie.js
.