如何在Sequelize中获取更新行的字段和值

时间:2018-05-31 09:23:44

标签: mysql sequelize.js

我在续集中更新一行的代码 - MySQL - Express如下

// Update an user
userController.update = function(req, res) {
  models.user.update(
  {
    user_name: req.body.name,
    user_address: req.body.address,
    user_email: req.body.email,
  }, {where: {user_id: req.params.id}, returning: true, plain: true})
  .then((user)=>{
    res.redirect("/users/show/"+user.user_id);
  })
  .catch((err)=>{
    console.log(err);
    res.render("../views/users/edit", {user: req.body});
  });   
};

但是user.user_id显示的是undefined的值 如何在sequelize

中获取更新行的字段和值

2 个答案:

答案 0 :(得分:1)

update返回受影响的行数作为第一个参数。如果您需要受影响的对象,可以使用spread

// Update an user
userController.update = function(req, res) {
  models.user.update(
  {
    user_name: req.body.name,
    user_address: req.body.address,
    user_email: req.body.email,
  }, {where: {user_id: req.params.id}, returning: true, plain: true})
  .spread((affectedCount, affectedRows) => {
    // use affectedRows here
  })
  .catch((err) => {
    console.log(err);
    res.render("../views/users/edit", {user: req.body});
  });   
};

如果您想使用.then 像这样使用.then(function([ rowsUpdate, [usersUpdated] ]) {

答案 1 :(得分:0)

从官方文档开始,只有options.returning true的postgres支持此功能

http://docs.sequelizejs.com/class/lib/model.js~Model.html#static-method-update