无法在 sailsjs 中使用 User.update() 更改用户密码,获取 returns [延迟]
Can't change the password of a user with User.update() in sailsjs, fetch returns [Deferred]
我正在使用 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
我也可以解析请求好了。我所缺少的只是正确执行的更新命令。
的价值
updateUser
是
[Deferred]
而且我不知道如何获得这方面的更多信息。
以此为例(来自文档):
await User.update({name:'Pen'})
.set({name:'Finn'});
我的语法正确。
函数旁边缺少等待。 "Works" 现在,即使我在重新登录时遇到问题,它也会更改数据库中的密码。
var updateUser = await User.update(user).set({password:hashedPass}).fetch();
我正在使用 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
我也可以解析请求好了。我所缺少的只是正确执行的更新命令。
的价值updateUser
是
[Deferred]
而且我不知道如何获得这方面的更多信息。
以此为例(来自文档):
await User.update({name:'Pen'})
.set({name:'Finn'});
我的语法正确。
函数旁边缺少等待。 "Works" 现在,即使我在重新登录时遇到问题,它也会更改数据库中的密码。
var updateUser = await User.update(user).set({password:hashedPass}).fetch();