Кто-нибудь может преобразовать обратный вызов в обещания с помощью функции async / await и прототипа в обычную функцию - PullRequest
0 голосов
/ 06 апреля 2020

Я не могу преобразовать эту функцию обратного вызова кода в обещания. Когда я конвертирую прототип в обычную функцию, это дает мне ошибку, пожалуйста, помогите мне исправить эту ошибку. Я пытаюсь использовать функцию ES7 asyn c -wait, чтобы избежать обратного вызова.

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 Ответ

0 голосов
/ 06 апреля 2020

Вы также можете сделать это так

pool.query(sql, bind)
.then((success) => {
    console.log(success);
})
.catch((error) => {
    throw err;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...