Sequelize Complex和/或

时间:2018-02-12 23:22:00

标签: javascript node.js sequelize.js

我想在Sequelize中做这样的陈述。

Select * from table WHERE completed = 0 AND tracking = 1 AND ((FromNumber = +15625554444 AND ToNumber = +17145554444) OR (FromNumber = +17145554444 AND ToNumber = +15625554444))

我如何在Sequelize中执行此查询?我查看了文档,但很困惑,并且在我的尝试中一直遇到奇怪的查询。

我在实验过程中尝试的实际代码是这样,但它并不意味着什么,因为它现在不起作用。 我不确定此类AND / Or Scenario的语法应该是什么样的。

var setNumberData = await models["texts"].findOne({
    where: {
      completed: 0,
      agentNumber: agentData.number,
      trackingNumber: obj.To,
      [Op.and]: [
        {to: realTo},
        {[Op.or] : [{from: agentData.number}]}
      ],
      // [Op.and]: [{to: obj.To}],
      // [Op.or]: [{from: obj.To}],
      // [Op.and]: [{to: obj.From}]
    }
  });

1 个答案:

答案 0 :(得分:0)

我明白了!关键是[]就像是有问题的条件的括号。

   var setNumberData = await models["texts"].findOne({
    where: {
      completed: 0,
      agentNumber: agentData.number,
      trackingNumber: obj.To,
      [Op.or]: [
        {[Op.and] : [
          {from: obj.From},
          {to: realTo}
        ]},
        {[Op.and] : [
          {from: realTo},
          {to: obj.From}
        ]}
      ]
    }
  });