Sequelize 中的嵌套内部连接

Nested inner join in Sequelize

我正在尝试使用 Sequelize 内部连接五个表。我知道我必须使用 required: true 进行内部连接。但即使在使用 required: true 之后,它也没有生成我想要实现的查询。在这里,我附上了没有 required: true 语句的代码。我应该如何放置 required: true 语句来内部连接五个表?

const db = require('../models');

const data = await db.A.findAll({
    where: conditionA,
    include: [{
        model: db.B,
        where: conditionB,
        include: [
            {
                model: db.C,
                where: conditionC,
                include: [{
                    model: db.D,
                    where: conditionD
                }],
            },
            {
                model: db.E,
                where: conditionE,
            }
        ]
    }]
});

模特协会

db.A.hasMany(db.B);
db.C.hasMany(db.B);
db.E.hasMany(db.B);
db.D.hasMany(db.C);

db.B.belongsTo(db.A);
db.B.belongsTo(db.C);
db.B.belongsTo(db.E);
db.C.belongsTo(db.D);

如有任何帮助,我们将不胜感激。提前致谢。

您应该在 include 选项中为所有模型指定 required: true 并指定 subQuery: false 以使 Sequelize 使用通常的 JOIN 而不是子查询的 JOIN。