任何人都可以使用 async/await 将回调转换为 Promise 并将原型函数转换为普通函数吗

我无法将此代码回调函数转换为承诺。当我将原型转换为正常功能时,它给了我一个错误,请帮我修复这个错误。我正在尝试使用 ES7 异步等待功能来避免回调。


function User() {};


User.prototype = {

    find : function(user = null, callback)

    {

        if(user) {

            let field = Number.isInteger(user) ? 'id' : 'username';

        }

        let sql = `SELECT * FROM users WHERE ${field} = ?`;

        pool.query(sql, user, function(err, result) {

            if(err) throw err


            if(result.length) {

                callback(result[0]);

            }else {

                callback(null);

            }

        }); 

    },

    create : function(body, callback) 

    {

        let pwd = body.password;

        body.password = bcrypt.hashSync(pwd,10);

        let bind = [];

        for(prop in body){

            bind.push(body[prop]);

        }

        // prepare the sql query

        let sql = `INSERT INTO users( fullname,email,birthday,gender,country,city,state,mobile,password) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)`;

        pool.query(sql, bind, function(err, result) {

            if(err) throw err;

            callback(result.insertId);

        });

    },


    login : function(username, password, callback)

    {

        this.find(username, function(user) {


            if(user) {

                if(bcrypt.compareSync(password, user.password)) {

                    callback(user);

                    return;

                }  

            }

            callback(null);

        });      

    }

}


module.exports = User;```


慕姐4208626
浏览 185回答 1
1回答

胡子哥哥

你也可以这样做pool.query(sql, bind).then((success) => {    console.log(success);}).catch((error) => {    throw err;});
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript