Mysql 续集更新记录,并将其';妇女协会
我有一个有很多城市描述的模范城市。 我想更新City,但每当数据包含CitiesDescriptions时,我也希望它们得到更新。 以下是我的数据:Mysql 续集更新记录,并将其';妇女协会,mysql,sequelize.js,Mysql,Sequelize.js,我有一个有很多城市描述的模范城市。 我想更新City,但每当数据包含CitiesDescriptions时,我也希望它们得到更新。 以下是我的数据: { "id": 4263, "name": "Accra", "country_id": 9, "slug": "accra-5", "code": "ACD", "hdo_code": "", "tourico_code": null, "active": true, "CitiesDescriptions":
{
"id": 4263,
"name": "Accra",
"country_id": 9,
"slug": "accra-5",
"code": "ACD",
"hdo_code": "",
"tourico_code": null,
"active": true,
"CitiesDescriptions": [
{
"id": 1,
"lang": "es",
"description": "text text"
}
]
}
因此,在本例中,我希望更新CitiesDescriptions中的数据。
如果CitiesDescriptions中的一个对象是新记录(没有ID),我希望创建它
无论如何,我还没有找到一种方法来做到这一点,无论我发现什么都会以某种方式失败。我发现几乎有效的最接近的方法是:
var city = models.City.build(params, {
isNewRecord : false,
include : [models.CitiesDescription]
});
Promise.all([
city.save(),
city.CitiesDescriptions.map(function (description) {
if (description.getDataValue('id')) {
return description.save();
} else {
description.city_id = city.id;
return models.CitiesDescription.create(description.dataValues);
}
})
]).then(function(results) {
res.send(results);
});
除非数据没有CitiesDescriptions密钥,否则此选项有效。
尽管如此,看起来还是很复杂,特别是如果明天我有更多的相关模型的话
有没有办法不费吹灰之力就能做到这一点
编辑:
找不到解决方案,我做了这个,它按预期工作
var params = req.body;
var promises = [];
promises.push(models.City.update(params, {
where: {
id: parseInt(req.params.id)
}
}));
if(params.CitiesDescriptions) {
promises.push(
params.CitiesDescriptions.map(function (description) {
return models.CitiesDescription.upsert(description, {individualHooks: true});
})
);
}
Promise.all(promises).then(function(results) {
res.send(results);
});
您是否尝试过使用
upsert
?我想这应该能达到你想要的所以,它现在起作用了?很高兴我能帮忙