Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 续集更新记录,并将其';妇女协会_Mysql_Sequelize.js - Fatal编程技术网

Mysql 续集更新记录,并将其';妇女协会

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":

我有一个有很多城市描述的模范城市。 我想更新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);
  });

您是否尝试过使用
upsert
?我想这应该能达到你想要的所以,它现在起作用了?很高兴我能帮忙