gpt4 book ai didi

node.js - 使用条件对内连接进行 Sequelize

转载 作者:行者123 更新时间:2023-12-03 22:18:02 24 4
gpt4 key购买 nike

我试图为我的案例找到解决方案,但没有。
我有3张 table :

Role = sequelize.define('Role', {
name: {
type: Sequelize.STRING
},
permissions: {
type: Sequelize.JSONB
}
});

EmployeeRole = sequelize.define('EmployeeRole', {
employeeId: {
type: Sequelize.INTEGER,
primaryKey: true,
},
roleId: {
type: Sequelize.INTEGER,
primaryKey: true,
}
});

我从 sequalize 之外的其他来源获得员工。

我在模型文件中为员工表创建了一个虚拟对象,如下所示:
const Employee = sequelize.define('Employee', {});

与以下协会
 EmployeeRole.belongsTo(Role, { foreignKey: 'roleId', sourceKey: 'id' });
EmployeeRole.belongsTo(Employee, { foreignKey: 'employeeId' });

我使用员工 ID,如何检索员工的角色?

更新

我试图实现的目标查询是我提供员工 ID 的以下内容:
select * from "Roles" as r,"EmployeeRoles" as er
where r.id = er."roleId"
and er."employeeId" = 2035

最佳答案

根据您的描述,我假设每个 Employee 可以有多个 Role 并且每个 Role 属于多个 Employee 。因此,这有很多关联。

您的协会将类似于,

Employee.belongsToMany(models.Role, {
through: model.EmployeeRole,
foreignKey: 'employeeId'
});

Role.belongsToMany(models.Employee, {
through: model.EmployeeRole,
foreignKey: 'roleId'
});

您可以检索员工角色,
models.Employee.findAll({
include: {
model: models.Role,
through: {
attributes: ['id']
}
}
})

希望这可以帮助...

关于node.js - 使用条件对内连接进行 Sequelize ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54449055/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com