信息输出早于验证

时间:2019-02-26 06:25:11

标签: javascript node.js

说明如何同步实现它以及如何工作?

let user = req.body;

if (user.user_password) {
    bcrypt.hash(user.user_password, config.salt.saltRounds, (err, hash) => {
        user.user_password = hash;
        console.log(user)
    });   
}
console.log(user)

1 个答案:

答案 0 :(得分:2)

Bcrypt故意过慢,以防止更快的硬件轻松破解您的哈希,因此,Bcrypt异步执行以避免在那时锁定您的应用。

检查此链接:Hashing in Action: Understanding bcrypt

不过,以下解决方案将同步“查找”。

async function foo() {
  const salt = await bcrypt.genSalt(10);
  this.password = await bcrypt.hash(this.password, salt);
}

foo();
console.log(this.password);