Запрос "SELECT FROM" для Mariadb в Node.js - PullRequest
0 голосов
/ 17 октября 2018

Я пытаюсь выполнить "select from" запрос к mariadb, и вот мой код.

var mariadb = require('mariadb');

router.get('/redirect', auth.required, (req, res, next) => {
    const { payload: { id } } = req;

    console.log("in redirection function, id " + id);



const pool = mariadb.createPool({
        host: 'localhost',
        port: 3307,
        user: 'root',
        password: 'abc',
        database: 'db',
    });
    pool.getConnection()
        .then(conn => {

            var query = 'select id from user_credentials where id="'+id+'"';
            console.log("query is " + query + "   : end");
            conn.query(query, function (err, rows) {

                if (err) {
                    console.log("Error");
                    throw err;
                } else {

                }

                return res.json({'resule':rows});

            });


        }).catch(err => {
            console.log("error 2" + err);
            conn.close();
        });



    console.log("nothing happened")
    return res.json({'resule':'test'});

});

, но он выполняется только до этого оператора

 console.log("query is " + query + "   : end");

и после этогоон переходит к утверждению «ничего не произошло» и возвращает ответ.Я предполагаю, что это какое-то асинхронное выполнение и не ждет завершения потока.Я пробовал несколько подходов, но он не работает.

1 Ответ

0 голосов
/ 17 октября 2018

Строка return res.json({'resule':rows}); возвращается из обратного вызова, в котором она находится, а не из содержащей ее функции.Чтобы посмотреть, что происходит, попробуйте:

console.log(res.json({'resule':rows}));

Результаты должны быть напечатаны на консоли.Тогда возникает вопрос, как получить результаты.Потратьте некоторое время на знакомство с асинхронным Javascript , например, обратными вызовами и обещаниями.

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