我对nodejs中的promises有一个可怕的误解。 我在模块中有一个函数将CSV转换为JSON:
const URL_01 = `${__dirname}/URL/some_CSV.csv`;
const fs = require('fs'),
Converter = require('csvtojson').Converter,
converter = new Converter({}),
convertToJson = function(file) {
return new Promise( (res, rej) => {
converter.on("end_parsed", (jsonData) => {
if(!jsonData){
rej("CSV to JSON conversion failed!")
}
res(jsonData);
});
fs.createReadStream(file).pipe(converter);
});
};
export default convertToJson;
然后我需要在server.js中使用CSVfile_URL启动函数convertToJson并将其保存到mongo db,现在没有输出数据:
app.get('/all', async (req, res) => {
const data = await convertToJson( URL_01 );
res.send(data);
});
谁能帮助我?
答案 0 :(得分:0)
夫妻问题:
csvjson
。 话虽如此,使用this回答,这样的事情可能有效(未经测试):
const fs = require('fs')
const csv = require('csvtojson')
const URL_01 = `${__dirname}/URL/some_CSV.csv`;
module.exports = file => new Promise((resolve, reject) => {
const promises = []
csv()
.fromFile(URL_01)
.on('json', converted => promsies.push(Promise.resolve(converted)))
.on('done', error => {
if (error) {
reject(error)
return
}
Promise.all(promises).then(convertedResults => resolve(convertedResults))
})
})
答案 1 :(得分:0)
您可能要使用NPM提供的现成async-csv
软件包。这将很简单:
const csv = require('async-csv');
let parsedObject = await csv.parse(csvFileAsString);