如何在 sequelize 中加入 4 个或更多表?

how to join 4 or more tables in sequelize?

我正在使用 sequelize 使用现有数据库重写一个应用程序。我已将现有的 table 转换为如下续集中的模型。我有员工 table 和访问类型模型,在管理员访问权限中具有读、写或两者。所有这些访问都针对员工和员工访问进行跟踪 table。但是还有一个员工组 table,它会跟踪员工是否属于特定组及其访问类型。我如何使用 sequelize 进行查询,以从 employeeAccess table 获取特定的员工访问列表,以及它是否属于组以及它是否属于该组的访问类型。所以本质上,需要通过加入 4 tables - employee、employee access、employee group 和 access type table.

来查询
  1. 员工模型
    var employee = db.seq.define('Employee',{
        id: { type: db.Sequelize.INTEGER},
        managerId: { type: db.Sequelize.INTEGER}, 
        employee_name: { type: db.Sequelize.STRING} ...
    });
    employee.hasOne(address);
    employee.belongsTo(employee, { foreignKey: 'managerId', as: 'Manager' }); 
  1. 地址模型
    var adress= db.seq.define("Adresss",{
        employee_id: { type: db.Sequelize.INTEGER}...
    });
    address.belongsto(employee); 
  1. accessType 模型
    var accessType = db.seq.define('AccessType ',{
        id: { type: db.Sequelize.INTEGER},
        type: { type: db.Sequelize.STRING}....
    });
    accessType.hasMany(employeeGroup );
    accessType.hasMany(employeeAccess);
  1. 员工组模型
    var EmployeeGroup = db.seq.define('EmployeeGroup ',{
        id: { type: db.Sequelize.INTEGER},
        access_type_id: { type: db.Sequelize.INTEGER},
        employee_id: { type: db.Sequelize.INTEGER} ...
    });
    EmployeeGroup .belongsto(employee);
    EmployeeGroup .belongsto(accessType ); 
  1. 员工访问模型
    var employeeAccess = db.seq.define('employeeAccess ',{
        id: { type: db.Sequelize.INTEGER},
        access_type_id: { type: db.Sequelize.INTEGER},
        employee_id: { type: db.Sequelize.INTEGER} ...
    });
    employeeAccess.belongsto(employee); 
    employeeAccess.belongsto(accessType ); 

sql

select * from employeeAcess as a 
left outer join employeeGroup as g 
on a.access_type_id = g.access_type_id 
left outer join accesstype as t 
on g.access_type_id = t.id 
where a.employee_id = 1 and g.employee_id = 1; 

尝试这样的事情:

const employeeItem = await employee .findById(1, {
  include: [{ 
    model: employeeGroup,
    include: [accessType]
  }, employeeAccess],
  where: {
    '$employeeGroup.access_type_id$': sequelize.col('employeeAccess.access_type_id')
  }
}