filter Sequelize belongsToMany get<Association> association table
filter Sequelize belongsToMany get<Association> association table
我正在使用 Sequelize 4.37.10,它运行良好。
不幸的是,我认为文档并不完美。所以它缺少一点描述 belongsToMany 的可能性。
我有以下问题:
我这样定义我的表:
const Department = db.define('department', {
name: {type: Sequelize.STRING, allowNull: false},
shortName: {type: Sequelize.STRING, allowNull: false}
})
const Employee = db.define('employee', {
title: {type: Sequelize.STRING},
name: {type: Sequelize.STRING, allowNull: false},
surname: {type: Sequelize.STRING, allowNull: false},
.
.
role: {type: Sequelize.STRING}
})
然后我这样关联表:
const EmployeeDepartments = db.define('employeeDepartments', {
manager: {type: Sequelize.BOOLEAN, allowNull: false}
})
Department.belongsToMany(Employee, {through: EmployeeDepartments})
Employee.belongsToMany(Department, {through: EmployeeDepartments})
现在我想让所有部门员工的 manager 字段都设置为 true。
创建没问题,但是select对我来说是个问题。
我尝试了以下但没有成功:
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 } } })
您还可以获得 department
的所有员工,其中您只有 id
:
const department = Department.build( { id: departmentId } );
// proceed as above
经过一段时间的搜索,我自己找到了一个非常简单的答案。
当使用 belongsToMany
时,Sequelize 确实使用连接从第二个 table 获取数据(我知道)。
我可以选择使用以下语法:
department.getEmployees({where: {'$employeeDepartments.manager$': true}})
我在 google 的一个页面上找到了它,但不幸的是我丢失了 url。
也许这可以帮助遇到类似问题的人。
我正在使用 Sequelize 4.37.10,它运行良好。 不幸的是,我认为文档并不完美。所以它缺少一点描述 belongsToMany 的可能性。
我有以下问题:
我这样定义我的表:
const Department = db.define('department', {
name: {type: Sequelize.STRING, allowNull: false},
shortName: {type: Sequelize.STRING, allowNull: false}
})
const Employee = db.define('employee', {
title: {type: Sequelize.STRING},
name: {type: Sequelize.STRING, allowNull: false},
surname: {type: Sequelize.STRING, allowNull: false},
.
.
role: {type: Sequelize.STRING}
})
然后我这样关联表:
const EmployeeDepartments = db.define('employeeDepartments', {
manager: {type: Sequelize.BOOLEAN, allowNull: false}
})
Department.belongsToMany(Employee, {through: EmployeeDepartments})
Employee.belongsToMany(Department, {through: EmployeeDepartments})
现在我想让所有部门员工的 manager 字段都设置为 true。 创建没问题,但是select对我来说是个问题。
我尝试了以下但没有成功:
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 } } })
您还可以获得 department
的所有员工,其中您只有 id
:
const department = Department.build( { id: departmentId } );
// proceed as above
经过一段时间的搜索,我自己找到了一个非常简单的答案。
当使用 belongsToMany
时,Sequelize 确实使用连接从第二个 table 获取数据(我知道)。
我可以选择使用以下语法:
department.getEmployees({where: {'$employeeDepartments.manager$': true}})
我在 google 的一个页面上找到了它,但不幸的是我丢失了 url。 也许这可以帮助遇到类似问题的人。