【发布时间】:2018-04-20 23:05:03
【问题描述】:
我不确定我是否需要为此进行原始查询,但我希望不需要。
我有这样的代码:
let where = {
"foo": "bar"
}
然后我遍历可能从查询参数发送的键,这需要在 JSON 数据类型中进行搜索。
const string_json_keys = ['title', 'description'];
let jsonHits = [];
string_json_keys.forEach(key => {
if (params[key]) {
let functionalWhere = sequelizeInstance.where(sequelizeInstance.fn('lower', sequelizeInstance.col(`metadata->$.${key}`)), params[key].toLowerCase());
jsonHits.push(functionalWhere);
}
});
if (jsonHits.length) {
where[Op.and] = jsonHits;
}
给定标题 Hello World 我想将搜索规范化为所有小写,因为 JSON 在 MySQL 中是区分大小写的。意思是我想说WHERE LOWER(title) = hello world。
以上代码转换为
WHERE (lower(`metadata->$`.`title`) =
我不确定如何根据需要将其更改为一串metadata->$.title。我尝试用\. 转义.,但没有运气。
【问题讨论】:
标签: mysql node.js sequelize.js