Sequelize 中查询$and多个$or



我想在 AND 语句后做 OR 语句。我想做一些类似的事情...其中性别 = "女性"和(提取(从开始的陶氏(= 2 或提取(从开始的陶氏(= 3(

let userWhereQuery = {}
let appointmentWhereQuery = {}
if (gender != 'none') {
userWhereQuery['$and'] = sequelize.literal(`lower(gender) = '${gender.toLowerCase()}'`)
}
if (days != '') {
let daysOr = []
for (let i = 0; i < days.length; i++) {
let dayOr = {
['$or']: sequelize.literal(`extract(dow from start) = ${days[i]}`)
}
daysOr.push(dayOr)
}
appointmentWhereQuery['$and'] = daysOr
}

我得到的错误

Unhandled rejection Error: Invalid value { '$or':
Literal {
val: 'extract(dow from "therapistAppointments"."start") = 1' } }

您收到该错误,因为它无法识别运算符别名。 这里有一个例子给你一个想法:

const Op = Sequelize.Op;
const operatorsAliases = {
$and: Op.and,
$or: Op.or,
$eq: Op.eq
};

并使用:

someMethod() => {
var whereObj = {
where: {
gender: 'female',
[Op.and]: [
{ days: {[Op.eq]: 2 }},
{ days: {[Op.eq]: 3 }}
]
}
};
return whereObj;
}

最新更新