【问题标题】:Where is the result of async function in node app?节点应用程序中异步函数的结果在哪里?
【发布时间】:2021-11-18 18:53:42
【问题描述】:

所以我正在尝试使用 nodejs 和 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();
        }
    });

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

【问题讨论】:

标签: javascript mysql node.js promise


【解决方案1】:

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

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

//or

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

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

【讨论】:

    猜你喜欢
    • 2018-02-25
    • 2021-07-04
    • 1970-01-01
    • 1970-01-01
    • 2021-08-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-20
    • 1970-01-01
    相关资源
    最近更新 更多