Задать вопрос
naghtigall
@naghtigall
Дизайнер и разработчик сайтов

Как вернуть данные из модуля Node.js?

Неделю как начал изучать Node.js - не могу получить данные из модуля. Получаю undefined.
Если в самом модуле вывожу данные rows - все выдает. Но мне нужно передать данные в приложение, где подключен модуль.
Есть app.js (код):
var tasks = require('./tasks');
var list = tasks.list();
console.log(list);

Для него создал модуль tasks.js (код):
var mysql = require('mysql');
var pool  = mysql.createPool({
connectionLimit : 15,
host: 'localhost',
database: 'node',
user: 'node',
password: '123'
});
var Tasks = {

list: function(){
pool.getConnection(function(err, connection) {
  connection.query( 'SELECT * FROM tasks', function(err, rows) {
return rows;
connection.release();
  });

});
},

edit: function(){
},
};

module.exports = Tasks;
  • Вопрос задан
  • 504 просмотра
Подписаться 1 Оценить Комментировать
Решение пользователя Damir Makhmutov К ответам на вопрос (3)
Всё дело в том, что внутри функции tasks.list - асинхронный код. Вам нужно что-то в таком стиле:

list: function(callback) {
    pool.getConnection(function(err, connection) {
        connection.query( 'SELECT * FROM tasks', function(err, rows) {
            callback(rows);
            connection.release();
        });
    });
},


И в вызывающем коде:

var tasks = require('./tasks');
var list = tasks.list(function (rows) {
    console.log(rows);
});


А далее читайте про Promise.
Ответ написан
Комментировать