首页 > 解决方案 > Sequelize MySQL 从其他表更新值副本

问题描述

我正在尝试制作一个可以执行以下操作的控制器:

UPDATE bankapplication_accounts
SET last_successful_logged = last_present_logged
WHERE id = 1

我在 sequelize 中的控制器如下所示:

exports.updateLastLoggedDate = (req, res) => {
  User.findOne({
    where: {
      id: req.params.userId,
    },
  }).then(user => {
    if (user) {
      User.update(
        {
          last_successfull_logged: user.last_present_logged,
        },
        { where: { id: req.params.userId } },
      ).then(() => {
        res.status(200).send('logout correct');
      });
    }
  });
};

这个控制器能写得更好吗?

标签: javascriptmysqlsequelize.js

解决方案


有2种方式

1:

exports.updateLastLoggedDate = (req, res) => {
User.findOne({
    where: {
      id: req.params.userId,
    },
  }).then((user) => {
    if (user) {
      user.update({
          last_successfull_logged: user.last_present_logged,
        }).then(() => {
        res.status(200).send("logout correct");
      });
    }
  });
};

2:

User.update(
    {
       last_successfull_logged: user.last_present_logged,
    }, /* set attributes' value */
    {
        where: {
             id: req.params.userId,
          },
     }, /* where criteria */
  ).then(() => {
    res.status(200).send("logout correct");
  });

推荐阅读