@inspiredman

[Node.JS] [node-mysql] Как возвращать значение функции?

Есть функция:
function check_session(id, sess, callback) {
   pool.getConnection(function(err, connection) {
       mysqlUtilities.upgrade(connection);
       mysqlUtilities.introspection(connection);
       connection.queryRow("select * from `users` where `id`="+id+" AND `session`='"+sess+"'", [], function(err, row) {
         if(row==false) callback(0);
           else callback(1);
       });
    });
}


А так же ее использование:
io.on('connection', function(socket){
    console.log('connected');
    check_session(19,'1e7d10bb50278502f530d8ca3cc47071', function(result){
       console.log(result); // я могу только так принимать и обрабатывать, а return result показывает undefined
    });
});


Как сделать так, чтобы можно было использовать эту функции в виде:
if(check_session(19,'1e7d10bb50278502f530d8ca3cc47071')) {
...
} else {
....
}


Понимаю, вопрос глупый, с NodeJS познакомился вчера, но все же, прошу ответить конкретно, без ссылок на литературу. Спасибо!
  • Вопрос задан
  • 425 просмотров
Пригласить эксперта
Ответы на вопрос 2
MarcusAurelius
@MarcusAurelius Куратор тега Node.js
автор Impress Application Server для Node.js
Не мучайтесь, а просто примите факт, что в node.js принято делать все функции, работающие с сетью, файлами и базами данных в асинхронном стиле, т.е. они возвращают значения не через return, а через callback. Перенесите свой if в callback, а лучше объявите функцию и передайте ее как callback параметр, чтобы вложенность не нарастала. Привыкнете...
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
без ссылок на литературу

привожу ссылку на статью, ибо единственный вменяемый способ сделать то что вы хотите - это корутины и я думаю вам еще рано. А awaitable в JS еще хз когда появятся.

howtonode.org/promises
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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