NodeJS MySql Команда db.query всегда выполняется последней - PullRequest
0 голосов
/ 05 апреля 2020

В моем простом коде, который использует NodeJS и Express Framework вместе с MySql в качестве базы данных, я сделал простой запрос к базе данных. Это показано ниже: vvv

app.get('/getusers', (req, res) => {

    console.log('Start line')

    let sql = 'SELECT * FROM users';
    let query = db.query(sql, (err, results) => {
        if(err) throw err;
        console.log(results);
        res.send('Posts fetched...');
    });

    console.log('End line')

});

В терминале вывод кода выглядит так, как показано ниже тогда команда db.query будет запущена позже? Как я могу исправить свой код, чтобы он работал по порядку?

1 Ответ

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

Запрос к базе данных является асинхронной операцией, что означает, что вы должны ждать результата запроса:

const util = require('util');
const query = util.promisify(db.query).bind(db); // Make db.query able to be awaited

app.get('/getusers', async (req, res) => { // declare your function as 'async'

    console.log('Start line')

    let sql = 'SELECT * FROM users';

    // Convert your callback to an try/catch block, so we could catch the error
    try {
      const results = await query(sql) // Your results will be returned straight here
      console.log(results);
      res.send('Posts fetched...');
    } catch (err) { // If some error happens, it will be catched here
      throw err;
    }

    console.log('End line')

});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...