2
従業員およびオフィスの2つのモデルがあります。すべての従業員は1つのオフィスに属し、1つのオフィスには多くの従業員があります。Sequelizeの関連付け値
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'
})
}
次のようにオフィスモデルは次のとおりです。
{
"id": "2",
"name" : "John",
"office": {
"id": 2,
"name" : "Seattle"
}
}
:私は以下の従業員を持っているデータベースで
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'
})
}
.. 。そして、次のオフィス:私は(1)のオフィス2
('Seattle'
)から1
('Chicago'
)に従業員のIDを変更したい
[
{
"id": 1,
"name" : "Chicago"
},
{
"id": 2,
"name" : "Seattle"
}
]
。
{
"id": "2",
"name" : "John"
"office": {
"id": 2
"name" : "Seattle"
}
}
それは、実際には、まったく何もしません:エラーなしに、DBの問題は、次のクエリ
// 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)
})
})
})
})
で...私の従業員のオフィスが更新されないということです変更されません。私は、私が正しくやっていないことが疑わしいが、Sequelizeは何の誤りも投げていない。