Mysql Sequelize:如何在Sequelize更新查询之后检索更新的记录,而不使用其他查询

Mysql Sequelize:如何在Sequelize更新查询之后检索更新的记录,而不使用其他查询,mysql,sequelize.js,Mysql,Sequelize.js,这是sequelize更新查询,其中用户是模型(通过电子邮件更新用户角色)。它的工作很好,但我希望使用更新查询,我会得到用户的数据以及。不使用另一个查询就可以获得它吗?不,不使用另一个查询就不可能。这不是Sequelize的限制,而是SQL的限制。在引擎盖下,sequelize需要执行以下操作: ` User.update({ role: 'user' }, { where: { email: email } }).then(function(result) { /

这是sequelize更新查询,其中用户是模型(通过电子邮件更新用户角色)。它的工作很好,但我希望使用更新查询,我会得到用户的数据以及。不使用另一个查询就可以获得它吗?

不,不使用另一个查询就不可能。这不是Sequelize的限制,而是SQL的限制。在引擎盖下,sequelize需要执行以下操作:

`    User.update({
  role: 'user'
}, {
  where: {
    email: email
  }
}).then(function(result) {
  //Returned value: either [0] or [1] i.e. record is updated or not
});
`
它只会更新行,但不会检索任何行。然后,它需要做第二步:

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

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

如果您使用的是postgresql,则可以在where子句之后设置returning true

select * from users where email = 'test@example.com'
如果你像我的例子一样使用其他数据库,比如mysql,那么你不能一次访问它,你必须使用另一个查询,如下所示

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

仅postgresql支持获取更新的行
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: ""
        });
    }


}