Javascript 过滤器Sequelize belongtomy get<;协会>;关联表
我正在使用Sequelize 4.37.10,它工作得很好。 不幸的是,在我看来,文档并不完美。因此,它缺乏一点对潜在可能性的描述 我有以下问题: 我这样定义我的表:Javascript 过滤器Sequelize belongtomy get<;协会>;关联表,javascript,mysql,sequelize.js,has-and-belongs-to-many,Javascript,Mysql,Sequelize.js,Has And Belongs To Many,我正在使用Sequelize 4.37.10,它工作得很好。 不幸的是,在我看来,文档并不完美。因此,它缺乏一点对潜在可能性的描述 我有以下问题: 我这样定义我的表: const Department=db.define('Department'){ 名称:{type:Sequelize.STRING,allowNull:false}, shortName:{type:Sequelize.STRING,allowNull:false} }) const Employee=db.define('E
const Department=db.define('Department'){
名称:{type:Sequelize.STRING,allowNull:false},
shortName:{type:Sequelize.STRING,allowNull:false}
})
const Employee=db.define('Employee'{
标题:{type:Sequelize.STRING},
名称:{type:Sequelize.STRING,allowNull:false},
姓氏:{type:Sequelize.STRING,allowNull:false},
.
.
角色:{type:Sequelize.STRING}
})
然后我将这些表关联如下:
const EmployeeDepartments=db.define('EmployeeDepartments'{
管理器:{type:Sequelize.BOOLEAN,allowNull:false}
})
所属部门(员工,{通过:员工部门})
Employee.belongTomany(部门,{通过:EmployeeDepartments})
现在,我希望将“经理”字段设置为true的所有部门员工。
创建没有问题,但是选择对我来说是个问题
我尝试了以下方法,但没有成功:
department.getEmployees({where:{manager:true}})
我也想到了示波器,但我不知道如何正确设计
你能帮我吗
department.getEmployees({where: {manager: true}})
用此代码更改此代码。
department.getEmployees(
include:{
model: employeedepartments, // your employee departments model name
{where: {manager: true},
required:true,
}
})
您只需在查询中添加include即可有趣的是,我只是在寻找完全相同的内容,唯一的结果就是您几个小时前提出的问题 我现在已经解决了,您需要的是:
department.getEmployees({ through: { where: { manager: true } } })
您还可以获取只有id的部门的所有员工
:
const department = Department.build( { id: departmentId } );
// proceed as above
经过一段时间的搜索,我自己找到了一个非常简单的答案
当使用belongtomany
Sequelize时,它确实使用连接从第二个表中获取数据(我知道)
我可以选择使用以下语法:
department.getEmployees({where: {'$employeeDepartments.manager$': true}})
我在谷歌上的一个页面上找到了,但不幸的是我丢失了url。
也许这对有类似问题的人有帮助。很好!遗憾的是,没有通过
选项说明任何有关的信息。非常感谢。在我看来,通过使用Department.findById(departmentId)
第二个代码行更容易。这种方法的问题是您碰到了数据库。build
没有。此外,您可能会遇到这样一个问题,即无法从生成的员工中真正删除关联字段departmentEmployee
(请参阅此问题:)。我用employees.forEach(e=>delete e.dataValues['department\u employeen'])解决了这个问题。
include需要一个数组