Задать вопрос
@SergOdinokiy

Запрос к MySQL node.js?

Почему функция возвращает пустой запрос? Я так понимаю MySQL не успевает за JS и приходит пустой запрос? Тогда как от этого избавиться и получать не пустой? Как правильно написать функцию?
function user(val) {
    var sss='';
    const connection = mysql.createConnection({
        database: 'base',
        host: "localhost",
        user: "root",
        password: ""
    });

    connection.query("SELECT * FROM `user` WHERE `uid`="+val+"",
        function(err, results) {
            console.log(results); //Тут все пришло!!!
            console.log(err);
            sss =results;
        });
    connection.end();
    return sss;
}

console.info(user(31)); //Тут пусто!!!
  • Вопрос задан
  • 231 просмотр
Подписаться 3 Простой 2 комментария
Решения вопроса 2
Комментировать
TTATPuOT
@TTATPuOT
https://code.patriotovsky.ru/
Во-первых, вам правильно про промисы сказали.
Во-вторых, я от всей души рекомендую никогда не использовать стандартный контроллер MySQL и сразу работать с query builder'ом любым. Я предпочитаю knex - очень прост в понимании, удобен, поддерживает async/await.

Ваша же проблема решается вот так:
function user(val) {
    return new Promise(function (resolve, reject) {
        var sss='';
        const connection = mysql.createConnection({
            database: 'base',
            host: "localhost",
            user: "root",
            password: ""
        });

        connection.query("SELECT * FROM `user` WHERE `uid`="+val+"",
            function(err, results) {
                if (err) reject(err);
                resolve(results);
            });
        connection.end();
    })
}

let user = user(31)
    .then(funnction(user) {
        console.log(user); //Здесь прийдёт
    })
    .catch(function(err) {
        console.log(err); //Здесь будет ошибка в случае чего
    })
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы