crawler.js
В:Nodejs - Почему моя переменная в классе не определена?
var async = require('async');
var request = require('request');
var cheerio = require('cheerio');
var Helper = require('./helper.js');
var helper = new Helper();
var Crawler = function(){
var me = this;
this.listCategory;
this.getCategory = function(){
//1. not use async : test key input is idMenu
helper.categoryInMenu(1, function(err, result){
me.listCategory = result;
});
//2. use async : test key input is idMenu
async.map([1], helper.categoryInMenu, function(err, result){
me.listCategory = result;
//console.log(result);
});
console.log(me.listCategory); // return undefined
}
}
module.exports = Crawler;
Когда я установил me.listCategory = result;
(с result != null
) затем вызвать listCategory
в файле main.js
или console.log
его в файле crawler.js
.
Отображается в команде undefined
.
Файл main.js
var Crawler = require('./crawler.js');
var snipper = new Crawler();
snipper.getCategory();
console.log(snipper.listCategory);
Я пытаюсь использовать async
модуль с функцией map
, она не работает.
Возможно, я не установлен me.listCategory = return of function helper.categoryInMenu
.
Файл helper.js
var db = require('mysql');
var config = require('./configLoader.js');
config.load(__dirname+'/config.json');
var Helper = function(){
var me = this;
this.conn = db.createConnection(config.get('db'));
this.menu = function(callback){
me.conn.query("SELECT * FROM `menu`", function(err, rows){
callback(err, rows);
});
}
// return list category with "input" is a idMenu
this.categoryInMenu = function(idMenu, callback){
me.conn.query("SELECT * FROM `category` WHERE idMenu = ?", idMenu, function(err, rows){
callback(err, rows);
});
}
// return config of Category with "input" is a idCategory (Category)
this.dom = function(idCategory, callback){
me.conn.query("SELECT * FROM `category` WHERE id = ?", idCategory, function(err, rows){
callback(err, JSON.parse(rows[0].dom));
});
}
}
module.exports = Helper;
Я не уверен в async, но метод map() создает новый массив, который вы должны вернуть. '' 'me.listCategory = async.map ([1], helper.categoryInMenu, функция (ERR, результат) { возврата me.listCategory = результат; //console.log(result); }); '' ' – gearsdigital
Я удалил свой ответ, поскольку я не могу проверить это. Также ваш метод '' this.getCategory''' должен возвращать что-то. – gearsdigital
Посмотрите здесь: https://gist.github.com/gearsdigital/0df212c86cf1a2c1f127 – gearsdigital