我有一个模型城市,其中有许多城市描述。 我想更新City,但只要数据包含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);
});