如何在使用JsStore操作IndexedDB时设置动态Where子句?
解决JsStore动态设置Where块列名的问题
我之前也碰到过一模一样的情况!JsStore在处理静态列名时很顺畅,但换成动态变量作为列名就卡壳,核心原因是普通对象字面量没法直接把变量当作属性名来解析。下面给你两种靠谱的解决办法:
方法1:使用ES6计算属性名(推荐)
这是最简洁的写法,直接用方括号把动态列名变量包起来,就能让JsStore正确识别它:
// 定义动态列名变量 const targetColumn = '你要查询的列名'; // 构造查询语句 const query = { from: '你的表名', where: { [targetColumn]: '匹配的值' // 这里用[]包裹变量实现动态属性 } }; // 执行查询 connection.select(query).then(results => { console.log(results); }).catch(error => { console.error(error); });
方法2:兼容ES5的写法(适合旧环境)
如果你的项目还需要支持不兼容ES6的环境,可以先创建一个空的where对象,再通过变量动态赋值属性:
var targetColumn = '你要查询的列名'; var whereCondition = {}; // 动态添加属性 whereCondition[targetColumn] = '匹配的值'; var query = { from: '你的表名', where: whereCondition }; // 执行查询 connection.select(query).then(function(results) { console.log(results); }).catch(function(error) { console.error(error); });
额外提醒
别忘了确认targetColumn的值和你IndexedDB表中实际存在的列名完全一致(大小写敏感哦),不然即使写法正确也查不到数据~
内容的提问来源于stack exchange,提问作者Harshul Shah
相关产品推荐
相关产品推荐

