【发布时间】:2019-10-03 18:33:23
【问题描述】:
我正在尝试创建动态 where 子句来使用 sequelize 过滤数据。但我被困在 where 子句中使用“OR”。
我尝试了以下方法来创建动态 where 子句
let where = {};
if(obj.NoteCat)
where.NoteCat = obj.NoteCat;
if(obj.NoteSubCat)
where.NoteSubCat = obj.NoteSubCat;
where.NoteEntryDate = {
[Op.and]: {
[Op.gte]: obj.FromDate,
[Op.lte]: obj.ToDate,
}
};
where.NoteWeekEndingDate = {
[Op.and]: {
[Op.gte]: obj.FromDate,
[Op.lte]: obj.ToDate,
}
};
await table.findAll({
where: where,
}
我希望在下面给出查询
SELECT *
FROM table
WHERE NoteCat = ''
AND NoteSubCat = ''
OR (NoteEntryDate >= '2019-05-16 12:52:50.931' AND NoteEntryDate <= '2019-05-16 12:52:50.931')
OR (NoteWeekEndingDate >= '2019-05-16 12:52:50.931' AND NoteWeekEndingDate <= '2019-05-16 12:52:50.931')
但实际输出的是
SELECT *
FROM table
WHERE NoteCat = ''
AND NoteSubCat = ''
AND (NoteEntryDate >= '2019-05-16 12:52:50.931' AND NoteEntryDate <= '2019-05-16 12:52:50.931')
AND (NoteWeekEndingDate >= '2019-05-16 12:52:50.931' AND NoteWeekEndingDate <= '2019-05-16 12:52:50.931')
我如何得到预期的结果。我已经浪费了一整天。非常感谢这方面的任何帮助。
谢谢。
【问题讨论】:
-
在顶层使用 $or,如下所示:stackoverflow.com/questions/20695062/…
-
@Anonym 我已经检查了上面的链接,但无法在动态 where 子句中进行调整。你能分享我的where子句的更新版本吗
标签: sql node.js sequelize.js