2016-03-21 3 views
-1

Поэтому в основном то, что я пытаюсь сделать что-то вроде этого (не обработки ошибок, чтобы сделать его короче):Node.js - Комбинирование MySQL результаты в единый объект

.get('/info', function(req, res){ 
    var combinedString = ""; 

    connection.query('SELECT col FROM table1 WHERE id = ?', [req.user.id], function(err, rows){ 
     combinedString += rows; 
    }); 

    connection.query('SELECT col FROM table2 WHERE id = ?', [req.user.id], function(err, rows){ 
     combinedString += rows; 
    }); 

    res.send(combinedString); 
}) 

Теперь я понимаю, что это проблема из-за асинхронного характера узла. Есть ли способ обойти его, чтобы получить результат, который я хочу?

ответ

0

Поскольку connection.query является асинхронным, combinedString все еще пуст в то время, вы res.send.

Вам нужно res.send внутри функции обратного вызова (ы):

.get('/info', function(req, res){ 
    var combinedString = ""; 

    connection.query('SELECT col FROM table1 WHERE id = ?', [req.user.id], function(err, rows){ 
     combinedString += rows; 
     connection.query('SELECT col FROM table2 WHERE id = ?', [req.user.id], function(err, rows){ 
      combinedString += rows; 
      res.send(combinedString); 
     }); 
    }); 

}) 
Смежные вопросы