gpt4 book ai didi

javascript - Sequelize.js 返回关联表的旧值

转载 作者:行者123 更新时间:2023-12-03 22:19:07 24 4
gpt4 key购买 nike

我正在尝试更新产品的状态(产品表)。
每个产品都有一个 statusId,它是“1”或“2”。
对于每个产品,statusId 的默认值是“1”,如果路由被访问一次,则应更改为“2”(反之亦然)。
"statusId"和 "status"{"id"} 应该始终相同。
当我访问路由时,数据库中的状态和“statusId”的状态发生了变化,但“状态”的 HTTP 响应与数据库中的实际值不同。
示例响应:

{
"id": 1,
"name": "Drone",
"barcode": "123456789",
"description": "A drone that can fly",
"image": "drone.jpg",
"createdAt": "2020-12-22T17:30:15.000Z",
"updatedAt": "2020-12-22T17:30:22.841Z",
"statusId": 2,
"status": {
"id": 1,
"name": "in",
"createdAt": "2020-12-22T17:30:15.000Z",
"updatedAt": "2020-12-22T17:30:15.000Z"
}
}

协会:

db.status.hasMany(db.product, {
foreignKey: {allowNull: false} ,

});
db.product.belongsTo(db.status, {
foreignKey: {allowNull: false}
});

路线:

 app
.route('/api/product/status/:id')
.put([authJwt.verifyToken], controller.updateProductStatus);

Controller :

exports.updateProductStatus =  (req, res) => {
// Get product with id and update status only
Product.findOne({
where: {
id: req.params.id
},
include: [
Status
]
})
.then(product => {
let newStatus = product.statusId === 1 ? 2 : 1;
product.update({
statusId: newStatus
})
.then(
res.status(200).send(product)
)
.catch(err => {
console.log("Error (Update product): " + err);
res.status(404).send(err);
})
})
.catch(err => {
console.log("Error (find old product): " + err);
res.status(404).send(err);
});
};

如何更改我的代码以返回“状态”的“id”的正确值?
先感谢您!

最佳答案

您应该像这样重新加载模型实例:

.then(
product.reload({ include: [Status]})
.then(res.status(200).send(product))
)

关于javascript - Sequelize.js 返回关联表的旧值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65413440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com