无法使用Sailsjs中的User.update()更改用户密码,获取返回[Deferred]

时间:2018-07-16 17:50:04

标签: node.js database sql-update sails.js

我正在使用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'});

我的语法正确。

1 个答案:

答案 0 :(得分:0)

该函数旁边缺少一个等待。现在,即使我在重新登录方面遇到问题,它仍可以“正常运行”,它会更改数据库中的密码。

        var updateUser = await User.update(user).set({password:hashedPass}).fetch();