Sequelize.js 对嵌套条件进行续集
但结果显示 选择。。。从课程。。。 其中(Sequelize.js 对嵌套条件进行续集,sequelize.js,Sequelize.js,但结果显示 选择。。。从课程。。。 其中(课程开始时间=9)或(课程开始时间=10)) “我的天数”查询从一开始就发生了什么?您缺少一个顶级的“和”,其中包含“天数”部分和“开始时间/结束时间”部分。奇怪的是,你没有得到一个错误-也许starttime/endtime部分覆盖了days部分 稍后添加:测试确认第2条将覆盖第1条。e、 g const result = await models.courses.findAll({ where: { [op.or]: [
课程
开始时间
=9)或(课程
开始时间
=10))
“我的天数”查询从一开始就发生了什么?您缺少一个顶级的“和”,其中包含“天数”部分和“开始时间/结束时间”部分。奇怪的是,你没有得到一个错误-也许starttime/endtime部分覆盖了days部分
稍后添加:测试确认第2条将覆盖第1条。e、 g
const result = await models.courses.findAll({
where: {
[op.or]: [
{
days: { [op.like]: '%a%' },
},
{
days: { [op.like]: '%b%' },
},
],
[op.or]: [
{
[op.and]: [
{
startTime: { [op.lte]: 9 },
},
{
endTime: { [op.gte]: 9 },
},
],
},
{
[op.and]: [
{
startTime: { [op.lte]: 10 },
},
{
endTime: { [op.gte]: 10 },
},
],
},
],
},
});
结果只有
where : {
[Op.or] : [{id : 1},{id : 2}], // 1st clause
[Op.or] : [{id : 3},{id : 4}] // 2nd clause
}
需要有一个操作数连接两个或子句……当前sequelize查询将生成以下sql查询:
WHERE id = 3 OR id = 4
WHERE id = 3 OR id = 4
SELECT * FROM courses
WHERE
(days LIKE '%a%' OR days LIKE '%b%') AND
(
(startTime <= 9 AND endTime >= 9) OR
(startTime <= 10 AND endTime >= 10)
)
SELECT * FROM courses
WHERE
(days LIKE ‘%a%’ OR days LIKE ‘%b%’) AND
(startTime <= 9 AND 9 < endTime) OR
(10 >= startTime AND 10 <= endTime)
const result = await models.courses.findAll({
where: {
[op.or]: [{
[op.or]: [{
days: { [op.like]: '%a%' },
}, {
days: { [op.like]: '%b%' },
}],
startTime: { [op.lte]: 9 },
endTime: { [op.gte]: 9 }
}, {
startTime: { [op.lte]: 10 },
endTime: { [op.gte]: 10 }
}]
},
});