我在Fiis.js
上有一个使用Express的POST方法,如下所示:
var router = express.Router();
var Fii = require(libs + 'model/fii').FiiSch;
var Scrapper = require(libs + 'db/scrapper.js');
// Create One Fii
router.post('/', passport.authenticate('bearer', { session: false }), function (req, res) {
var fii = new Fii({
ticker: req.body.ticker,
proventos: []
});
fii.save(function (err) {
if (!err) {
log.info('New fii created with ticker: %s', fii.ticker);
fii.proventos = Scrapper.getFiiDetail(fii.ticker)
return res.json({
status: 'OK',
fii: fii
});
}
});
});
在另一个名为Scrapper.js
的文件中,我有骑马员呼叫
function getFiiDetail(ticker){
var result = []
horseman
.open('http://www.scanfii.com.br/raio-x/' + ticker + '/proventos')
.wait(randomInt)
.status()
.evaluate(function(){
var descNode = document.querySelectorAll('.table-hover th')
var desc = Array.prototype.map.call(descNode, function (t) { return t.textContent })
var valueNode = document.querySelectorAll('.table-hover td')
var value = Array.prototype.map.call(valueNode, function (t) { return t.textContent })
var finalData = [];
for (var i = 0 ; i < value.length; i++) {
if (i % 10 != 0)
continue;
var item = {};
item[desc[0]] = value[i];
item[desc[1]] = value[i+1];
item[desc[2]] = value[i+2];
item[desc[3]] = value[i+3];
item[desc[4]] = value[i+4];
item[desc[5]] = value[i+5];
item[desc[6]] = value[i+6];
finalData.push(item)
}
return finalData;
})
.then(function(finalData){
var proventos = [];
for (var i = 0 ; i < finalData.length; i++) {
var provento = new Fii.ProventoSch({
dataBase: finalData[i]["Data Base"],
dataPagamento: finalData[i]["Data Pgmto"],
dataEx: finalData[i]["Data-ex"],
mesRef: finalData[i]["Mês de Referência"],
vlRendimento: finalData[i]["Rendimento"]
});
proventos.push(provento);
}
result = proventos;
})
.catch(function(err){
//log.info(err)
})
.close();
return result;
}
module.exports.getFiiDetail = getFiiDetail;
我的问题是,在Post方法上调用getFiiDetail方法时,什么都没有发生,一个console.log也不被放置,以查看其是否进入该方法。
我已经尝试从此函数中获取返回值,对其进行记录,检查数据库,但似乎骑手被忽略了。