Добрый день. Я новичок в Node , сильно не критикуйте. Столкнулся с проблемой при возврате значения функции при вызове из модуля.
Например есть модуль:
function GetTableData() {
var connection = mysql.createConnection({
host: setup.host,
user: setup.user,
password: setup.password,
database: setup.database
});
connection.connect();
var query = connection.query("SELECT * FROM tables", function (error, result) {
if (error) { console.log(error.message); throw error; }
jdata = JSON.stringify(result);
console.log('mod_mysql_GetTables:AppData:' + jdata);
return jdata;
});
connection.end(function () {
console.log('Connection Close!');
});
function GetTest(){
var x =5 ;
return x;
}
module.exports.GetTableData = GetTableData();
module.exports.GetTest = GetTest();
Этот модуль я вызываю в основном файла index.js по средствам require()
var mod_mysql = require('./mod_mysql');
var tables = mod_mysql.GetTableData;
console.log(tables);
В итоге я получаю undefined
Делаю тоже самое с функцией GetTest, все работает нормально.
Если запускать модуль без подключения то все работает нормально, выводятся данные из mysql.
Подскажите что я делаю не так.
Смотрите, если Вы экспортируете модуль, и при этом в конце функции ставите ()
, другими словами, вызываете функцию, то Вы экспортируете не саму функцию, а результат ее выполнения.
var mod_mysql = require('./mod_mysql');
var tables = mod_mysql; /// без GetTableData;
console.log(tables);
Если же Вы, при экспорте функции, не вызываете ее, другими словами, после ее название не ставите ()
, тогда Вы экспортируете саму функцию. В результате, Вы сможете запустить ее тогда, когда посчитаете нужным. Например, :
var mod_mysql = require('./mod_mysql');
var tables = mod_mysql.GetTableData;
var f = tables();
console.log(f);
Рабочий пример: две функции экспортируются разными способами и по разному используются. Код модуля:
function GetTableData(z) {
return z+1;
}
function GetTest(){
var x =5 ;
return x;
}
module.exports.GetTableData = GetTableData;
module.exports.GetTest = GetTest();
Код исполняемого файла:
var mod_mysql = require('./7.js');
var GetTableData = mod_mysql.GetTableData;
var GetTest = mod_mysql.GetTest;
console.log(GetTableData(1));
console.log(GetTest);
Виртуальный выделенный сервер (VDS) становится отличным выбором
Выдаёт ошибку типа "cannot read property style of null"Что пытаюсь сделать: после движения мышкой к курсору должно прилипнуть изображение (сначала прописал...
Есть кастомный чекбокс на сайте, по клику на который необходимо узнать активный он или нетПишу следующие:
Доброго времени сутокНиже код таблички по ссылке файлик (обычный текстовой), в файле табличка которая строится по виду Excel таблицы