2
我有两种型号,员工 s和办公室 s。每个员工属于一个办公室,办公室有许多员工。续集相关值
我很难搞清楚如何使用Sequelize更新员工的办公室。
的员工模型如下:
let Employee = sequelize.define("Employee", {
id: {
field: 'id',
type: DataTypes.INTEGER,
primaryKey: true,
allowNull: false,
autoIncrement: false
},
name: {
field: 'name',
type: DataTypes.STRING(255),
allowNull: false
}
}, {
freezeTableName: true,
timestamps: false,
deletedAt: false
})
Employee.associate = models => {
Employee.belongsTo(models.Office, {
foreignKey: 'id'
})
}
的办公室模型如下:
let Office = sequelize.define("Office", {
id: {
field: 'id',
type: DataTypes.INTEGER,
primaryKey: true,
autoIncrement: true
},
name: {
field: 'name',
type: DataTypes.STRING(255),
allowNull: false
}
}, {
freezeTableName: true,
tableName: 'Lkup_Office',
timestamps: false,
deletedAt: false
})
Office.associate = models => {
Office.hasMany(models.Employee, {
foreignKey: 'id'
})
}
在我有以下员工数据库:
{
"id": "2",
"name" : "John",
"office": {
"id": 2,
"name" : "Seattle"
}
}
..以及下面的办公室:
[
{
"id": 1,
"name" : "Chicago"
},
{
"id": 2,
"name" : "Seattle"
}
]
欲雇员的ID改变(1)的办公室从2
('Seattle'
)到1
('Chicago'
);问题是,用下面的查询
// PUT /2/office/1
router.put('/:employeeId/office/:officeId', (req, res) => {
models.Employee.findOne({
where:{id:req.params.employeeId},
include:[{model:models.Office}]
}).then(employee => {
models.Office.findOne({
where:{id:req.params.officeId},
include:[{model:models.Employee}]
}).then(office => {
employee.setOffice(office).then(result => {
res.send(result)
})
})
})
})
...我的员工的办公室,不更新:
{
"id": "2",
"name" : "John"
"office": {
"id": 2
"name" : "Seattle"
}
}
它不,其实,做任何事情:没有错误,数据库没有改变。我怀疑有些事情我做得不对,但Sequelize并没有抛出任何错误。