为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

慕姐4208626 2022-06-16 15:07:00
我无法将此代码回调函数转换为承诺。当我将原型转换为正常功能时,它给了我一个错误,请帮我修复这个错误。我正在尝试使用 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;```
查看完整描述

1 回答

?
胡子哥哥

TA贡献1825条经验 获得超6个赞

你也可以这样做


pool.query(sql, bind)

.then((success) => {

    console.log(success);

})

.catch((error) => {

    throw err;

});


查看完整回答
反对 回复 2022-06-16
  • 1 回答
  • 0 关注
  • 184 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信