微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

从bcrypt哈希函数获取未定义的值

如何解决从bcrypt哈希函数获取未定义的值

好吧,我从一个函数中获得了一个未定义的值,我不知道为什么,我试图获取要在数据库中插入的密码哈希值,但是具有该函数的const具有值“未定义”,那么我应该在代码中进行哪些更改?

async postCompletedetails(req,res) {
  const company = req.params.company;
  const name = req.params.name;
  const password = req.params.password;
  const hashPass = await bcrypt.hash(password,saltRounds,function(err,hash) {
    if (err) {
      throw err
    } else {
      console.log(hash)
    }
  })



  if (
    company !== undefined &&
    name !== undefined &&
    password !== undefined
  ) {

    const {
      token
    } = req.headers;
    const decoded = jwt.verify(token,process.env.JWT_ACCOUNT_ACTIVATION);
    const id = decoded.id;

    const update = await pool.query(
      `UPDATE user SET Name_user= '${name}',password= '${hashPass}' WHERE ID_user = ${id}`
    );
    const incompany = await pool.query(
      `INSERT INTO company (Name_company) VALUES ('${company}') `
    );

    const inrelcompany = await pool.query(
      `INSERT INTO rel_company_user (ID_company,ID_user) VALUES (LAST_INSERT_ID(),${id})`
    );

    return res.json({
      code: 200,message: "todo bien... todo correcto y yo que me alegro",hashPass,password
    });
  } else {
    return res.json({
      code: 400,message: "bro hiciste algo mal",});
  }
}

解决方法

调用bcrypt.hash()并传递回调函数时,不会返回Promise。您可以取消该回调,然后您的await将按预期工作。

基本上,与许多API一样,您可以在“老式”回调函数方法或更现代的Promise / async模型之间进行选择。一个或另一个,但不能同时出现。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。