如何在 Sequelize JS 中更新 reference_id(FK 列)中具有相同值的对象数组?

How to update array of objects with same value in reference_id (FK Column) in Sequelize JS?

我有一个对象数组,看起来像这样:

[
  {
    id: '5b29c08b-597c-460c-a3c7-ac8852b7a5dc',
    option_text: 'njnj',
    answer: false
  },
  {
    id: '8ff5bda6-9335-495c-9c72-15ef258b899b',
    option_text: 'jnjn',
    answer: true
  }
]

这里的 answer 列是相互关联的,就像如果对象的任何一个 answer 设置为 true,另一个将从前端作为 false 出现。所以我必须更新与引用的 id 关联的所有行。 我面临的问题是更新查询不是 运行 但它进入代码的 then 块内部而不是抛出错误。下面是我的代码:

// UPDATE Option
exports.updateOption = (req, res, next) => {
  try {
    console.log(req.body);
    db.Option.update(req.body, {
      where: { question_id: req.params.id }
    }).then(() => {
      console.log('A');
      return res.status(200).send(errors.UPDATED_SUCESSFULLY);
    }).catch(err => {
      console.log('B');
      return res.status(204).send(errors.INTERNAL_SERVER);    
    });
  } catch(err) {
    console.log('C');
    return res.status(204).send(errors.INTERNAL_SERVER);
  }
};

示例 Table 相同的数据:

我在想的是,对于与相同 question_id 关联的所有行,首先到 answerfalse,然后更新具有 answer 的特定行设置为 true。 但这是一个好方法还是任何人都可以建议我一些更好的解决方案?

您应该在同一个事务中执行所有更新(以避免数据库中的不一致):

sequelize.transaction(async transaction => {
  const options = req.body;
  for (const option of options) {
    await db.Option.update(option, {
        where: { question_id: req.params.id },
         transaction
      });
  }
}).then(...