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

Как заставить Node.Js дождаться выполнения MySQL?

Т.к. Node.js, в отличии от PHP - штука асинхронная, то возникают некоторые трудности...
function sql_get(){
  var mysql      = require('mysql');
  var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : '',
    database : '1047750'
  });
  connection.query(
    'SELECT * FROM test',
    function(err, result, fields){
      return(result[0]);
    }
  );
  
  connection.end();
}
console.log(sql_get());

Код выводит в консоль "undefined"...
ВНИМАНИЕ, ВОПРОС! Как заставить Node дождаться ответа от MySQL, а потом уж вывести значение в консоль?
В гугл не слать! Кроме головной боли он пока ничего не дал...
  • Вопрос задан
  • 2593 просмотра
Подписаться 7 Оценить Комментировать
Решения вопроса 1
Ahen
@Ahen
Универсальный дилетант
А если так:
var mysql      = require('mysql');
  var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : '',
    database : '1047750'
  });
  connection.query(
    'SELECT * FROM test',
    function(err, result, fields){
      console.log(err);
      console.log(result);
    }
  );
  
  connection.end();

У вас тут итак колбек, функция, которая будет вызвана после совершения запроса и примет в себя данные (результат либо ошибка).
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
gadfi
@gadfi
https://gamega.org
используйте async await
Ответ написан
Комментировать
@BorisKorobkov Куратор тега MySQL
Web developer
Функция sql_get() не имеет return, поэтому "undefined".
return совсем в другой функции. Кстати, он никак не используется. Вместо него напишите вызов нужного вам действия (например, console.log(result);).

Забудьте про PHP и синхронность. Если взялись писать на node.js - учитесь асинхронности!
Ответ написан
sanchezzzhak
@sanchezzzhak
Ля ля ля...
await из ES6 передает вам привет

caolan.github.io/async
лучшая псевдо асинхроностьи избавление от колбасы колбеков
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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