读取CSV文件,我无法返回读取的数据。 console.log(data)
包含我需要的内容,但它不会返回data
(例如,在调用readCSV
函数时):
export default function readCSV(filename) {
let parser = parse({columns: true, trim: true, skip_empty_lines: true}, function(err, data){
console.log(data);
return data;
});
fs.createReadStream(__dirname + '/' + filename).pipe(parser);
return parser;
}
这给了我解析器实例而不是数据 - 尝试了它的许多变体。 如何返回data
?我在JS中作为一个概念缺少什么?
我正在使用node-csv-parse
lib。
答案 0 :(得分:2)
我猜它是因为parse()
是异步功能。您可能需要另一个回调来检索值,或者使用新的时尚方法来使用promises:
export default function readCSV(filename) {
return new Promise((resolve, reject) => {
let parser = parse({columns: true, trim: true, skip_empty_lines: true}, function(err, data){
if (err)
reject();
else
resolve(data);
});
fs.createReadStream(__dirname + '/' + filename).pipe(parser);
})
}
然后你会使用这样的:
readCSV("somefile").then((data) => {
console.log(data)
})
.catch(()=>{
console.log("Something went wrong")
})
或使用异步功能:
async function doThing() {
let data = await readCSV("somefile");
console.log(data)
}