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並沒有拋出任何錯誤。