javascript 从回调函数异步等待[重复]

iyfjxgzm  于 2023-03-21  发布在  Java
关注(0)|答案(1)|浏览(119)

此问题在此处已有答案

Trying to hash a password using bcrypt inside an async function(7个答案)
With async the bcrypt.hash function returns undefined but it works fine with .then(1个答案)
昨天关门了。
我有这个功能,它保存在数据库中的用户:

exports.saveUser = ({ first_name, last_name, email, password }) => {
    const query = "insert into users (first_name, last_name, email, password_hash) values ($1, $2, $3, $4) RETURNING *";
    bcrypt.hash(password, 10, async function (err, hash) {
        const res = await db.query(query, [first_name, last_name, email, hash]);
        return res.rows[0];
    });
    return res;
};

我在bcrypt回调函数中有一个async函数,在这个函数中插入数据,我在这里返回插入的行。我如何让它返回saveUser函数?
所以最后saveUser()就是那个res.rows[0]记录?

n9vozmp4

n9vozmp41#

exports.saveUser = async ({ first_name, last_name, email, password }) => {
    const query = "insert into users (first_name, last_name, email, password_hash) values ($1, $2, $3, $4) RETURNING *";
    let hash = await bcrypt.hash(password, 10);
    const res = await db.query(query, [first_name, last_name, email, hash]);
    return res.rows[0];
};

我已经使bcrypt.hash等待而不是回调。然后使saveUser异步ad它工作

相关问题