概述前缀查询适合搜索与自动补全。本文在索引上用范围与游标实现分页。前缀与分页function openDB(name) { return new Promise((resolve, reject) => { const r = indexedDB.open(name, 1); r.onupgradeneeded = () => { const db = r.result; const s = db.createObjectStore('items', { keyPath:'id' }); s.createIndex('byName','name'); }; r.onsuccess = () => resolve(r.result); r.onerror = () => reject(r.error); }); } async function queryPrefix(prefix, limit = 20) { const db = await openDB('pref'); const tx = db.transaction('items','readonly'); const idx = tx.objectStore('items').index('byName'); const range = IDBKeyRange.bound(prefix, prefix + '\uffff'); const req = idx.openCursor(range); const out = []; await new Promise((res, rej) => { req.onsuccess = e => { const c = e.target.result; if (c && out.length < limit) { out.push(c.value); c.continue(); } else res(); }; req.onerror = () => rej(req.error); }); db.close(); return out; }

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论
立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部
1.889228s