Sequelize.js 如何在sequelize中使用'or'运算符?
我想知道在这种情况下如何使用“或”运算符:Sequelize.js 如何在sequelize中使用'or'运算符?,sequelize.js,Sequelize.js,我想知道在这种情况下如何使用“或”运算符: getOrderDeadline(order) { return order.getDeadlines({ limit: 1, where: { '$OrdersDeadlines.initialDate$': { [this.Sequelize.Op.lte]: new Date() }, '$OrdersDeadlines.finishDate$': { [this.Sequelize.Op.gte]:
getOrderDeadline(order) {
return order.getDeadlines({
limit: 1,
where: {
'$OrdersDeadlines.initialDate$': { [this.Sequelize.Op.lte]: new Date() },
'$OrdersDeadlines.finishDate$': { [this.Sequelize.Op.gte]: new Date() },
},
order: [['situationId', 'DESC']],
});
}
我需要在当前日期内获取一个截止日期,但有时截止日期可能有一个不确定的日期,finishDate列中有一个空值。因此,我需要使用“或”运算符。您应该按以下方式使用“或”运算符:
getOrderDeadline(order) {
const Op = this.Sequelize.Op;
const now = new Date();
return order.getDeadlines({
limit: 1,
where: {
[Op.or]: [
[Op.and]: [
{'$OrdersDeadlines.initialDate$': { [Op.lt]: now }},
{'$OrdersDeadlines.finishDate$': { [Op.gt]: now }},
],
{'$OrdersDeadlines.initialDate$': { [Op.lt]: now }},
]
},
order: [['situationId', 'DESC']],
});
}
根据您的评论进行更新。旁注:正如你所说,“根据@PhilippeAuriach的回答,我解决了我的问题。因此,我将解释我为什么使用下面的代码。在我们的应用程序中,订单有情境,情境代表订单的当前状态,它有许多截止日期,对于情境和截止日期,我们彼此有一个带有名称和ID的表。因此,我将选择限制为一个,并获取最后一个情境的行,但有时候截止日期可能有一个未定义的完成日期。我不明白的是如何使用操作符,对我来说有点混乱,但现在我看到我需要在Sequelize中使用操作符包装我的条件。下面是代码:
getOrderDeadlines(order) {
const Operator = this.Sequelize.Op;
const currentDate = new Date();
return order.getDeadlines({
limit: 1,
where: {
[Operator.or]: [
{
'$OrdersDeadlines.initialDate$': { [Operator.lte]: currentDate },
'$OrdersDeadlines.finishDate$': { [Operator.gte]: currentDate },
},
{
'$OrdersDeadlines.initialDate$': { [Operator.lte]: currentDate },
'$OrdersDeadlines.finishDate$': null,
},
],
},
order: [['situationId', 'DESC']],
});
}
@PhilippeAuriach,谢谢。这不是我应该的工作方式,我想这样做:其中:initialDate
getOrderDeadlines(order) {
const Operator = this.Sequelize.Op;
const currentDate = new Date();
return order.getDeadlines({
limit: 1,
where: {
[Operator.or]: [
{
'$OrdersDeadlines.initialDate$': { [Operator.lte]: currentDate },
'$OrdersDeadlines.finishDate$': { [Operator.gte]: currentDate },
},
{
'$OrdersDeadlines.initialDate$': { [Operator.lte]: currentDate },
'$OrdersDeadlines.finishDate$': null,
},
],
},
order: [['situationId', 'DESC']],
});
}