NodeJs + Mysql запрос выполняется слишком поздно (задержки) - PullRequest
0 голосов
/ 31 января 2019

NodeJs + Mysql запрос выполняется слишком поздно (задерживает) https://github.com/mysqljs/mysql

Здравствуйте, ребята, мне нужна помощь с mysql js, когда я делаю .query ();обратный вызов всегда задерживается и дает мне пустой результат, но если я поставлю таймер, он даст мне результаты, как мы решим проблему ... в их документации сказано: «Каждый метод, который вы вызываете для соединения, ставится в очередь и выполняется по порядку."поэтому они используют async, я полагаю, кто-нибудь знает, как ждать результатов, прежде чем отправлять данные обратно на сторону клиента?Я пробовал Promise, Async / Await, но они использовали что-то еще, чтобы запастись своими запросами.

con.query(`SELECT * FROM users`,
          function(err, data) {
            // this callback always delays 4 seconds, this callback executes straight away without waiting.
            return data;
          }
        );

1 Ответ

0 голосов
/ 31 января 2019

Существует несколько вариантов действий в этом случае, я бы порекомендовал вам обернуть ваш запрос в Promise следующим образом:

    function getUsers() {
        return new Promise((resolve, reject)=> {
            con.query(`SELECT * FROM users`,
            function(err, data) {
                if(err) {
                    return reject(err);
                }
                resolve(data);
            });
        })
    }

    //usage 

    async function(req, res) {
        try {
            const users = await getUsers();
            res.send(users);
        } catch(error) {
            res.status(500).send(error)
        }
    }
...