gpt4 book ai didi

node.js - NodeJS Sequelize : Issue with setting value of associations

转载 作者:行者123 更新时间:2023-12-03 22:28:39 26 4
gpt4 key购买 nike

我在两个表(产品和服务)之间存在多对多关系,这两个表通过带有成本列 product_service 的连接表连接。当我创建尝试向产品添加服务时,第一次调用不会返回更新的值,即使数据库已更新,我知道因为我检查了它,所以我只能在我的应用程序上看到更新的值另一个电话。

 var query = {
where: {
id: req.params.id
},
include: defaultIncludes()
}
models.products.findOne(query)
.then(function (product) {
if (!product) {
return res.status(404).json({message: 'Product not found' });
} else {
this.product = product;
return models.services.findById(req.body.service_id);
}
})
.then(function (service) {
return this.product.addServices(service);
})
.then(function (result) {
return this.product.save();
// return models.products.findOne(query);
})
.then(function (product) {
return res.status(200).json(product)
})
.catch(function (err) {
logger.error(err);
return res.status(500).json({error: err.message});
});

我认为这可能与 promise 有关,无论是针对 addServices 还是保存功能,但我似乎无法弄清楚。

最佳答案

首先,您不需要在 product.save() 之后调用 product.addServices(service) 。然后,这两个函数不会将更新的实例作为回调函数的第一个参数传递。

因此,在您的情况下,您可以执行以下操作:

...
.then(function (service) {
return this.product.addServices(service);
})
.then(function () {
return res.status(200).json(this.product)
})
.catch(function (err) {
logger.error(err);
return res.status(500).json({error: err.message});
});

关于node.js - NodeJS Sequelize : Issue with setting value of associations,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38683062/

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