从URL导入CSV文件到Node.js

我目前正在开发一个项目(Node.js with Express),在这个项目中我必须导入一个CSV文件,给定一个特定的URL,然后用它的数据填充我的Mongo数据库。

我对Node很新,所以我可能会做一些非常错误的事情,但是在我的研究中,我发现这种方法试图从远程CSV文件中获取数据:

methods.getStops = function (req, res) { var line = req.params.line; var url = "/apiTransporte/Apresentacao/csv/gtfs/onibus/paradas/" + "gtfs_linha{line}-paradas.csv".format({line: line}); var parsed = []; var http = require('http'); var options = { host: 'dadosabertos.rio.rj.gov.br', port: 80, path: url } http.get(options, function(response) { response.on('data', function( data ) { csv_data = data.toString(); csv_data = csv_data.replace("", "\r"); jsonified = []; csv(csv_data, {columns: true, rowDelimiter: 'unicode'}, function (err, output) { console.log("parsing data"); if (err) console.log("ERROR: ", err); jsonified.push(output); }); console.log("data parsed", jsonified); } ); console.log("Got response: " + response.statusCode); }).on('error', function(e) { console.log(url); console.log("Got error: " + e.message); }); } 

这是我的看法,应该照顾从远程CSV文件获取数据。 但是,我在尝试获得响应时遇到了问题,显然它是以大块的forms出现的。 我尝试将它连接到response.on('data')callback之外的string,如下所示:

 var response_data = ""; response.on('data', function (data) { response_data += data; ... 

但是在填充之后,我无法访问response_data。 如果我用console.loglogging它,而不是将它添加到一个string,预期的CSV显示在我的terminal上,在某些点上被打破,我相信这是因为每当一个块被检索时调用callback。

我的问题是,如何读取所有的CSV后调用一个函数,我的string“response_data”包含来自CSV文件的所有数据? 所以我可以正确parsing成一个JSON对象,并存储到我的MongoDB?

感谢您的帮助

你可以试试这个代码?

 var response_data = ''; response.on('data', function(data) { response_data += data; }); response.on('end', function() { // 1. convert response_data to json // 2. store json to mongodb });