NodeJS асинхронный вызов MySQL к пулу соединений не возвращает результата

0

В настоящее время я работаю с чатботами и пытаюсь разработать новую структуру ожидания/асинхронности в NodeJ.

В настоящее время мой код выглядит следующим образом:

exports.checkUser = async function (userId, callback){
let result;
    try{
        result = await pool.query('SELECT * FROM users WHERE id = ?;', 
                [userId]);
        if(!result || result.length == 0)
        {
            return false;
        }
        else if(result.length != 0)
        {
            return true;
        }
    }
    catch(err)
    {
        console.log(err);
        callback(err, null);
    }
};

Я пошел на предположение, что мне не нужно возиться с обещаниями при использовании структуры asyc/wait. Я называю эту функцию в другом месте следующим образом:

mysql.checkUser(user).then((result) =>
    {
//console for debug
      console.log(result);  
    });

Ну, я знаю, что проверки на успех довольно просты, я, кажется, не получаю приличный результат.

Он всегда бросает мне что-то вроде внутри объекта результата:

_callSite: Error
at Pool.query (/app/node_modules/mysql/lib/Pool.js:199:23)
at Object.exports.checkUser (/app/lib/mysql/mysql.js:49:29)
at Object.exports.checkUser (/app/lib/auth/authentication_engine.js:28:11) [...]
Теги:
async-await

1 ответ

2
Лучший ответ

pool.query не возвращает Promise, поэтому выполнение не будет выполнено, когда оно будет вызвано как функция async. Это действительно хорошая идея использовать пакет mysql2, более подробно: https://www.npmjs.com/package/mysql2#using-promise-wrapper

  • 0
    Наконец-то я получил результат! Я отредактирую свой ответ с моим фиксированным кодом, большое спасибо за помощь!
  • 0
    Пожалуйста! :)
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню