在Dexie.js中如何使用变量实现类LIKE查询
在Dexie.js中如何使用变量实现类LIKE查询
嘿,我明白你的问题啦!你现在遇到的情况是,直接把变量放进正则字面量里(比如/VarTest/),其实它会把VarTest当成固定字符串去匹配,而不是读取你定义的变量值。下面给你两种解决办法,都能实现用变量做类LIKE的模糊查询:
方法一:使用RegExp构造函数(兼容filter场景)
如果你还是想用filter方法,可以通过RegExp构造函数来动态创建正则表达式,这样就能把变量的值传入进去啦:
var searchTerm = 'Dani'; // 可以根据需求加第二个参数,比如'i'表示忽略大小写 var nameRegex = new RegExp(searchTerm); db.friends.filter(function(friend) { return nameRegex.test(friend.name); }) .toArray() .then(function(result) { alert(`Found ${result.length} friends containing '${searchTerm}' in their name...`); });
方法二:用Dexie内置的contains方法(更高效)
其实Dexie提供了更适合模糊查询的API,where(...).contains(),它能利用数据库索引(比如你代码里的friends: "name,age",name已经是索引字段),比客户端的filter性能好很多:
var searchTerm = 'Dani'; db.friends.where('name').contains(searchTerm) .toArray() .then(function(result) { alert(`Found ${result.length} friends containing '${searchTerm}' in their name...`); });
简单说,方法二是更推荐的方式,因为它是在数据库层面做查询,不用把所有数据都拉到客户端再过滤,速度更快~
备注:内容来源于stack exchange,提问作者Dani Carla
相关产品推荐
相关产品推荐

