gpt4 book ai didi

javascript - Nodejs中异步csv转JSON数据输出

转载 作者:行者123 更新时间:2023-12-03 02:22:53 25 4
gpt4 key购买 nike

我对 Nodejs 中的 Promise 有一个严重的误解。我的模块中有一个函数可以将 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);
});

谁能帮助我?

最佳答案

几个问题:

  1. 您将 ES2015 模块语法与 CommonJS 语法混合在一起,这是行不通的。
  2. 根据模块 here 的文档,您似乎没有正确使用 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))
})
})

关于javascript - Nodejs中异步csv转JSON数据输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49080165/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com