Zarb1N
@Zarb1N
Студент-бакалавр.

Как присвоить результат sql-запроса переменной node.js?

Необходимо результат запроса присвоить переменной. Присвоение результата работы функции переменной не работает.

Нашел на stackoverflow следующее решение, но оно у меня не сработало:
connection.query("SELECT * FROM workingProgramOfTheDiscipline", function(err, rows){
  if(err) {
    throw err;
  } else {
    setValue(rows);
  }
});
let someVar 
function setValue(value) {
  someVar = value;
  console.log('Variable Value: ' + JSON.stringify(someVar));  // нужный результат выводится
}
console.log('Work, please! ' + JSON.stringify(someVar))       // 'Work, please! undefined'


Крайне вероятно, что я упустил какую-то базовую и простую вещь в силу собственной зелености. Тем не менее два дня не могу найти решение.
  • Вопрос задан
  • 341 просмотр
Решения вопроса 1
@Miiinro
function query(sql) {
	return new Promise((resolve, reject) => {
		connection.query(sql, (err, rows) => {
			if (err) 
				reject(err);
			else
				resolve(rows);
		});
	});
}
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
FEAR_Kleef
@FEAR_Kleef
Fullstack dev.
Запрос к базе - асинхронная функция. Обработай результат запроса либо через async / await , либо через промисы
Ответ написан
@Azperin
Дилетант
Может так будет понятней в чем загвоздка
let someVar; // let someVar = undefined;
setTimeout(() => {
	setValue('SOME VALUE');
}, 0);

console.log('Work, please! ' + someVar); // 'Work, please! undefined'

function setValue(value) {
  someVar = value;
  console.log('Variable Value: ' + someVar); // Variable Value: SOME VALUE
};

console.log('Work, please! ' + someVar); // 'Work, please! undefined'
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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