` 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是模型(用户的角色通过电子邮件更新)。它工作正常,但我希望使用更新查询,我也将获得用户的数据。是否可以在不使用其他查询的情况下获取它?
答案 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: ""
});
}
}