Sequelize:如何在不使用其他查询的情况下续订更新查询后检索更新的记录

时间:2017-05-26 13:04:56

标签: mysql sequelize.js

`    User.update({
  role: 'user'
}, {
  where: {
    email: email
  }
}).then(function(result) {
  //Returned value: either [0] or [1] i.e. record is updated or not
});
`

这是sequelize更新查询,其中User是模型(用户的角色通过电子邮件更新)。它工作正常,但我希望使用更新查询,我也将获得用户的数据。是否可以在不使用其他查询的情况下获取它?

2 个答案:

答案 0 :(得分:1)

不,没有其他查询就不可能。这不是Sequelize的限制,它是SQL的限制。在引擎盖下,续集需要做:

update users set role = 'user' where email = 'test@example.com'

只会更新行,但不会检索任何行。然后,它需要做一秒钟:

select * from users where email = 'test@example.com'

实际获取(现在更新的)行。

答案 1 :(得分:0)

如果您使用的是Postgresql,则可以设置where子句后返回true

where: { socketID: socket.id },
  returning: true,

并且,如果像我这样使用其他数据库(例如mysql),那么您一次也无法使用它,则必须使用如下所示的另一个查询

async function PersonalDetail(req, res) {
var Email = req.body.email;


    const user = await User.findOne({ where: { EmailAddress: Email, IsActive: true } });

    if (user != null) {
        user.UpdateDate = new Date();
        user.EmplomentID = req.body.EmplomentID;
        user.LivingID = req.body.LivingID;
        user.LocationID = req.body.LocationID;

        await user.save();

        res.json({
            IsSuccess: true,
            message: 'User updated',
            User: user
        });
    }
    else {
        res.json({
            IsSuccess: true,
            message: 'User Not updated',
            User: ""
        });
    }


}