续集复杂和/或

Jos*_*han 2 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))
Run Code Online (Sandbox Code Playgroud)

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

到目前为止,我在试验时的实际代码尝试是这样的,但这并不意味着什么,因为它现在不起作用。我不确定这种类型的 AND/Or 场景的语法应该是什么样的。

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}]
    }
  });
Run Code Online (Sandbox Code Playgroud)

Jos*_*han 9

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

   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}
        ]}
      ]
    }
  });
Run Code Online (Sandbox Code Playgroud)