承接自之前的 egg.js(三)增删改查操作,对Op操作符进行记录。
- Op操作符的基本使用
async findMultiple(){
// 解构出keyword关键词
let {keyword} = this.ctx.request.body
let Op = this.app.Sequelize.Op
let res = await this.app.model.User.findAll({
where:{
username:{
// 查询username中有keyword关键词的数据
[Op.like]:'%'+keyword+'%'
}
}
})
}
详细记录如下:
[Op.and]:{a:5} // 且 a=5
[Op.or]:[{a:5},{a:6}] // a=5或者a=6
[Op.gt]:6 // id > 6
[Op.gte]:6 // id >=6
[Op.lt]:10 // id <6
[Op.lte]:10 // id <=10
[Op.ne]:20 // id != 20
[Op.eq]:3 // =3
[Op.not]:true // 不是true
[Op.between]:[1,10] // 在1和10之间
[Op.notBetween]:[1,10] // 不在1和10之间
[Op.in]:[1,2] // 在 [1,2]之中
[Op.notIn]:[1,2] // 不在[1,2]中
[Op.like]:'%adm' // 模糊查询,包含 '%adm'
[Op.notLike]:'%adm' // 不包含 '%adm'
[Op.iLike]:'%adm' // 包含'%adm' (不区分大小写)(仅限PG)
[Op.notILike]:'%adm' //不包含 '%adm' (不区分大小写)(仅限PG)
[Op.startswith]:'adm' // 类似 'adm%',以 'adm'开头
[Op.endswith]:'adm' // 类似 '%adm',以adm结尾
[Op.substring]:'adm' // 类似 '%adm%',包含有'adm'
[Op.regexp]:'^[a|d|m]' // 匹配正则表达式 (仅限Mysql/PG)
[Op.notRegexp]: '^[a|d|m]' // 不匹配正则表达式/!~ '^[a|d|m]' (仅限 MySQL/PG)
[Op.iRegexp]: '^[a|d|m]' // ~* '^[a|d|m]' (仅限 PG)
[Op.notIRegexp]: '^[a|d|m]' // !~* '^[a|d|m]' (仅限 PG)
[Op.like]: { [Op.any]: ['cat', 'hat']} // 包含任何数组['cat', 'hat'] - 同样适用于 iLike 和 notLike
[Op.overlap]: [1, 2] // && [1, 2] (PG数组重叠运算符)
[Op.contains]: [1, 2] // @> [1, 2] (PG数组包含运算符)
[Op.contained]: [1, 2] // <@ [1, 2] (PG数组包含于运算符)
[Op.any]: [2,3] // 任何数组[2, 3]::INTEGER (仅限PG)
[Op.col]: 'user.organization_id' // = 'user'.'organization_id', 使用数据库语言特定的列标识符, 本例使用 PG
....