我正在使用postgresql(Elephant SQL),但在此数据库中创建和查找用户时没有遇到问题。这是我的方法。这很简单,而且大多数问题都不重要。我所缺乏的是更改用户密码或其他任何功能的能力。它找到正确的用户以及几乎所有需要更改条目的内容,都可以按预期工作。
updatePassword: async function(req,res){
if(req.body.password){
console.log("PUT BODY" + req.body.password);
var newPass = req.body.password;
var userId = req.session.userId;
var foundUser = await User.findOne({id:userId},function(err,user){
if(err){
return res.status(500).json({err:'database error'});
}
if(user){
var hashedPass = bcrypt.hashSync(newPass, bcrypt.genSaltSync(8), null);
console.log("Found user");
console.log(userId);
console.log(hashedPass);
var updateUser = User.update(user).set({password:hashedPass}).fetch();
console.log(updateUser);
if(updateUser){
return res.status(200).json({status:'success'});
}
else{
return res.status(500).json({err:'database error'});
}
}
if(!user){
return res.status(500).json({err:'database error'});
}
});
}
else{
return res.status(401).json({err:'empty body'});
}
},
我已经调试了很长时间了,我根本无法弄清楚。找到的用户是正确的,我可以获取他的当前属性,但是我绝不能更改其密码。
谁能提供一些见识?也许添加一些东西:这是一个PUT请求,仅包含:
password:iaj34x
我也可以解析请求。我所缺少的只是update命令正确执行。
的值updateUser
是
[推迟]
我不知道如何获取更多信息。
以此为例(来自文档):
await User.update({name:'Pen'})
.set({name:'Finn'});
我的语法正确。
答案 0 :(得分:0)
该函数旁边缺少一个等待。现在,即使我在重新登录方面遇到问题,它仍可以“正常运行”,它会更改数据库中的密码。
var updateUser = await User.update(user).set({password:hashedPass}).fetch();