我有问题,我需要从使用express开发的网页中读取csv文件。
基本上我有
router.get('/metricas', function(req, res, next) {
var datos= lee.leedatos();
res.render('metricas', {page:'Metricas', menuId:'metricas',data:datos});
});
和lee.leedatos()是以下
exports.leedatos= function(){
var datos;
const csv =require('fast-csv')
const stream =fs.createReadStream('mywebsite/book1.csv');
const streamCsv=csv({
headers:true,
})
.on('data',data=>{
datos=data;
//console.log(datos);
})
.on('finish',()=>{
console.log('finished')
console.log(datos)
return datos;
})
stream.pipe(streamCsv);
}
我的问题是,网页总是在文件完全被读取之前返回:( ..和data:datos始终为空。
如何使通话同步?
谢谢!
答案 0 :(得分:1)
您可以使用回调/ promise来跟踪异步代码的执行。这是带有诺言的代码的样子:
let payload = {
"user":{
"profile":{
"details":
{
"firstname": this.firstnameControl
"lastname": this.lastnameControl
"phone": this.phoneControl.value
"email": this.emailControl.value
}
}
}
}
这里是博客文章的链接,可以帮助您了解异步功能:https://blog.risingstack.com/node-hero-async-programming-in-node-js/