我有一个IndexedDB存储,其中有100k个名称字段。 如何根据名称过滤包含一些子字符串?
我尝试使用indexeddb getall(),但导致CPU使用率增加。 使用游标进行迭代花费了很多时间。 尝试过dexie js。
执行这种操作是否有好的实现方法?
答案 0 :(得分:1)
如果为名称字段建立索引,则可以进行前缀搜索,但是普通索引不足以进行完整的子字符串搜索。
const db = new Dexie ('dbname');
db.version(1).stores({things: 'id, name'});
function query(prefix) {
return db.things
.where('name').startsWith(prefix)
.toArray();
}
此示例在'name'字段上定义了一个索引,查询函数将使用IDBKeyRange来表示'name'索引上的getAll(),该IDBKeyRange代表以给定字符串开头的所有名称。