`title: IndexedDB keyPath 嵌套字段与索引实践``categories: Web 开发/前端/数据管理``keywords: IndexedDB,keyPath,嵌套字段,索引,查询``description: 使用 keyPath 指向嵌套字段并建立索引,提升基于对象内部属性的查询与排序能力。`初始化与索引function openDB() { return new Promise((resolve, reject) => { const r = indexedDB.open('nested-db', 1); r.onupgradeneeded = () => { const db = r.result; if (!db.objectStoreNames.contains('items')) { const s = db.createObjectStore('items', { keyPath: 'id' }); s.createIndex('byMetaType', 'meta.type'); } }; r.onsuccess = () => resolve(r.result); r.onerror = () => reject(r.error); }); } 查询示例async function queryByMetaType(db, type) { return new Promise((resolve, reject) => { const tx = db.transaction('items', 'readonly'); const idx = tx.objectStore('items').index('byMetaType'); const out = []; idx.openCursor(IDBKeyRange.only(type)).onsuccess = e => { const c = e.target.result; if (!c) return resolve(out); out.push(c.value); c.continue(); }; tx.onerror = () => reject(tx.error); }); }

发表评论 取消回复