带嵌套表的Sequelize中的“ WHERE”子句

问题描述

在我的私人项目中使用Sequelize期间,我只有一张桌子

const Order= sequelize.define('Order',{
    _id: {
        type: DataTypes.INTEGER,primaryKey: true,autoIncrement: true
    },value: {
        type: DataTypes.INTEGER,allowNull: false
    },_order_tracker_id: {
        type: DataTypes.INTEGER,allowNull: true
    },type: {
        type: DataTypes.INTEGER,Order.associate = function(models) {
    const {Order} = models
    
    Order.hasMany(Order,{
      as: 'tempOrder',foreignKey: '_order_tracker_id',onDelete: 'RESTRICT',onUpdate: 'RESTRICT'
    })
    
  }

});

我正在使用Sequelize来查询数据:

const { Order} = sequelize.models
const oSequelize = {
      attributes: [
        '_id','value',],raw: false,include: [
        {
          model: Order,as: 'tempOrder',attributes: ['value' as 'tracker_value'],where: {
            [Op.or]: [
              {
                value: {
                  [Op.gt]: 1
                }
              },{
                '$tempOrder.value$': { [Op.gt]: 1 }
              }
            ]
          },required: false
        },

我希望它会在此SQL中显示相同的结果:

SELECT T1._id,T1.value,T1._order_tracker_id,T2.value as tracker_value 
FROM Order as T1 
JOIN Order as T2 ON T1._id = T2._order_tracker_id
WHERE T1.type = 1 AND (T1.value > 1 OR T2.value > 1)

更多说明:例如,我有这张桌子

_id   value     _order_tracker_id  type
1     100        null              1
2     0          null              1
3     300        2                 2

要在用户界面中显示数据,我希望查询的结果将是这样

_id    value    _order_tracker_id     tracker_value
1      100      null
2      0        null                   300

我的难题是:我不知道如何转移(T1.value > 1 OR T2.value > 1)来语法化。 如何更改Sequelize配置以达到预期效果?

解决方法

我在这里显示了此示例,请尝试此示例。希望对您有帮助。

谢谢

const { Order} = sequelize.models
const oSequelize = Table1.findAll({
  attributes: [
    '_id','value',],raw: false,where: {
        [Op.or]: [
          {
            value: {
              [Op.gt]: 1
            }
          },{
            '$table2.value$': { [Op.gt]: 1 }
          }
        ]
      },include: [
    {
      model: Table2,as: 'table2',attributes: ['value' as 'tracker_value'],required: false
    },]

})

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...