Sequelize: where with include 基于父列

Sequelize: where with include based on parent's column

我有两个模型,A 和 B。

A.hasMany(B, {
      foreignKey: "A.id",
      as: "A.id",
    });

B.belongsTo(A, {
      foreignKey: "B.id",
      as: "B.id",
});

我想要来自 table A 的所有数据和所有相关数据(来自 table B),除非 A.isActive = false(在这种情况下我只需要来自 table A)。我找不到任何方法来使用 sequelize 来做到这一点。请帮忙

试试这个:

  A.findAll({
        include: [
            {
                model: B
            }
        ],
        where: { isActive: true }
    });

 

您可以尝试带条件的 LEFT JOIN。

A.findAll({
    include: [{
        model: B,
        required: false,
        where: { 
            '$A.isActive$': true
        } 
    }]
})