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,谢谢。

这不是我应该的工作方式,我想这样做:其中:initialDatecurrentDate或initialDategetOrderDeadlines(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']], }); }