节点应用程序中异步函数的结果在哪里?

Jig*_*ael 0 javascript mysql node.js promise

所以我正在尝试使用 Node.js 和 MySQL 在后端构建一些基本的注册。

let params = [email, password];
    
    const salt = bcrypt.genSaltSync(10);
    var promise = bcrypt.hash(password, salt);
    
    let query = 'insert into users (email, password) values (?,?)';
    connection.promise().query(query, params, (err, result, fields) => {
        console.log(err);
        if(err && err.code === 'ER_DUP_ENTRY') {
            res.status(400).json({
                "message": "There is an account already associated with this email adress!"
            }); 
            res.end();
        }
        else {
            res.status(200).json({
                "message": "User created!"
            });
            res.end();
        }
    });
Run Code Online (Sandbox Code Playgroud)

我的问题是当我使用 bcrypt.hash 函数时,我不知道如何获取散列密码,因为该函数返回给我一个承诺。那么我如何访问散列密码以便稍后我可以将其引入我的数据库中?我知道我可以使用promise.then(),但仍然不知道获取密码后该怎么做。任何想法,这看起来很容易,但我仍然不够聪明

Ban*_*mar 5

您应该使用await Usebcrypt.hashSync()方法而不是 bcrypt.hash(),

const salt = bcrypt.genSaltSync(10);
const hashedPassword = bcrypt.hashSync(password, salt);

//or

const hashedPassword = await bcrypt.hash(password, salt);

Run Code Online (Sandbox Code Playgroud)

参考文档: https: //www.npmjs.com/package/bcrypt