-6ren">
gpt4 book ai didi

node.js - 如何在eggjs模型中的\"when I use ‘Op.notLike ’函数中避免转义字符 "findAll "?

转载 作者:行者123 更新时间:2023-12-03 22:33:41 25 4
gpt4 key购买 nike

我有这个代码

    async getHisDataByTime(startTime, endTime, ids) {
console.log("getHisDataByTime >>", startTime, endTime, ids)
const Op = this.ctx.app.Sequelize.Op;
const dataHis = await this.ctx.model.Datahis.findAll({
where: {
device_id: { [Op.in]: ids },
datetime: {
[Op.gte]: startTime,
[Op.lte]: endTime
},
data:{
[Op.notLike]: '%valid%',
}
},
//group:['device_id'],
order: [['datetime']],
attributes: ['device_id', 'datetime', 'data']
});

return dataHis;
}
生成此 sql 命令:
SELECT `device_id`, `datetime`, `data` FROM `data_his` AS `datahis` 
WHERE `datahis`.`device_id` IN ('2019083107100024', '2020010303100002')
AND (`datahis`.`datetime` >= '2019-09-23 00:00:00'
AND `datahis`.`datetime` <= '2019-09-24 23:00:00')
AND `datahis`.`data` NOT LIKE '\"%valid%\"'
ORDER BY `datahis`.`datetime`;
我期待 '%valid%' ,但实际上得到了 '\"%valid%\"' 。转义字符 \"自动出现,mysql命令执行如下:

因此,在这种情况下, Op.notLike 根本不起作用。
我把转义符 \"去掉后在Navicat中执行,结果正是我想要的:

但是如何避免在“findAll”中使用转义字符 \" 来解决这个问题?我已经将我的代码与下面的官方示例进行了比较,但是没有用。
https://sequelize.org/master/manual/model-querying-basics.html

最佳答案

到目前为止,不知道是什么导致了转义字符,但这里有两种解决方案。

 1. public async query(sql: string, options: object): Promise using
2. JSON_CONTAINS_PATH to check the key of data
解决方案2的代码:
async getHisDataByTime(startTime, endTime, ids) {
console.log("getHisDataByTime >>", startTime, endTime, ids)
const { Op } = this.app.Sequelize;
let validFn = this.app.Sequelize.fn("JSON_CONTAINS_PATH", this.app.Sequelize.col("data"), 'one', '$.valid');
const dataHis = await this.ctx.model.Datahis.findAll({
where: {
[Op.and]: [
{ device_id: { [Op.in]: ids } },
{
datetime: {
[Op.gte]: startTime,
[Op.lte]: endTime
}
},
this.app.Sequelize.where(validFn, 0)
]
},
//group:['device_id'],
order: [['datetime']],
attributes: ['device_id', 'datetime', 'data']
});

return dataHis;
}

关于node.js - 如何在eggjs模型中的\"when I use ‘Op.notLike ’函数中避免转义字符 "findAll "?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64063404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com