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

标签 mysql sequelize.js

我在sequelize - 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 显示的值是未定义的 如何在sequelize中获取更新行的字段和值

最佳答案

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] ]) {

关于mysql - 如何在 Sequelize 中获取更新行的字段和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50620907/

相关文章:

php - 你能强制 doctrine query builder 不期望 where 子句中的操作数吗?

Mysql 将几列转换为一行

node.js - Nest.JS 中的 Sequelize 查询在返回前未解析

javascript - 如何检查多边形是否包含 Point Sequelize 和 postgres

mysql - 在 where 子句 : invalid use of group function 中使用计数

mysql - 在 "ORDER BY"(Mysql) 上应用 "UNION"

如果存在具有 2 个特定列的行,则 MYSQL 更新表;如果不存在,则插入新行

javascript - Sequelize .sync() : error in SQL syntax near NUMBER

postgresql - 查询 Sequelize 模型字段以重叠日期间隔

javascript - 按列和关联记录的列序列化查询表