`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);

});

}

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部