用法1
问题场景
传入参数:数组array,数组元素不定
目标
要实现逻辑:遍历数组,根据inverted的值对同一个表字段增加一个like查询
要生成的sql语句(where条件部分):
`jz_task_info`.`task_tag` LIKE '%,1,%' AND `jz_task_info`.`task_tag` LIKE '%,2,%'
解决方法
直接上代码:
const sequelize = require('sequelize');
const Op = sequelize.Op;
class xxController extends Controller {
// 查询任务列表
async getTaskList() {
//要拼装的动态语句数组
let dynamicParams = [];
//前台传入的数组,这里模拟数据
//let tagList = JSON.parse(ctx.request.body.tagList);
let tagList = [{id:1,
"inverted":false,
text:"aaa",
type:"primary"
},
{id:2,
inverted:false,
text:"bbb",
type:"primary"
},
{id:3,
inverted:true,
text:"ccc",
type:"primary"
}]
if(tagList&&tagList.length>0){
tagList.forEach(element => {
if(element.inverted === false){
dynamicParams.push({
task_tag: {[Op.like]:`%${element.id}%`}
})
}
});
}
await app.model.JzTaskInfo.findAll({
where:{
[Op.and]:dynamicParams
}
});
};
}
用法2
问题场景
传入参数:数组array,数组个数固定
目标
要实现逻辑:根据inverted的值对同一个表字段增加一个like查询
要生成的sql语句(where条件部分):
`jz_task_info`.`task_tag` LIKE '%,1,%' AND `jz_task_info`.`task_tag` LIKE '%,2,%'
解决方法
直接上代码:
const sequelize = require('sequelize');
const Op = sequelize.Op;
class xxController extends Controller {
// 查询任务列表
async getTaskList() {
//要拼装的动态语句数组
let dynamicParams = [];
//前台传入的数组,这里模拟数据
//let tagList = JSON.parse(ctx.request.body.tagList);
let tagList = [{id:1,
"inverted":false,
text:"aaa",
type:"primary"
},
{id:2,
inverted:false,
text:"bbb",
type:"primary"
},
{id:3,
inverted:true,
text:"ccc",
type:"primary"
}];
if(tagList&&tagList.length>0){
tagList.forEach(element => {
if(element.inverted === false){
dynamicParams.push({
task_tag: {[Op.like]:`%${element.id}%`}
})
}
});
}
await app.model.JzTaskInfo.findAll({
where:{
[Op.and]:[{
task_tag:{
[Op.like]: '%,1,%' //这里放要传的参数
}
},{
task_tag:{
[Op.like]: '%,2,%'//这里放要传的参数
}]
}
});
};
}
like操作符注意细节
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)