我获得了一个返回 CSV 文件的端点。我想到达该端点,读取数据并将其发送给客户端。这就是我现在所拥有的。
app.get('/data', (req, res) => {
request('foo.com/downloadCSV', (error, response, body) => {
res.send(csvToJson(body));
});
});
因此,在前端,我点击“/data”,然后它使用请求库进行调用以获取 CSV 数据。 CSV 的正文位于“body”中。 “csvToJson”函数只是将给定的数据格式化为 arrays/json。
当我在客户端上console.log响应时,我的正文是:ReadableStream,锁定(...)
如何将数据发送给客户端?
编辑:
这是我的 csvToJson 函数:
const csvToJson = (csv) => {
const content = csv.split('\r');
const header = content[0].split(',');
return _.tail(content).map((row) => {
return _.zipObject(header, row.split(','));
});
}
最佳答案
我已经尝试过你的代码并且它有效。在公共(public)文件夹中,我创建了sample.csv。
var express = require('express');
var app = express();
var request = require('request');
var _ = require('lodash');
app.use(express.static('public'));
app.get('/data', (req, res) => {
request('http://localhost:3000/sample.csv', (error, response, body) => {
res.send(csvToJson(body));
});
});
const csvToJson = (csv) => {
const content = csv.split('\n');
const header = content[0].split(',');
return _.tail(content).map((row) => {
return _.zipObject(header, row.split(','));
});
}
app.listen(3000, function () {
console.log('Listening on port 3000!')
})
示例.csv 文件:
a,b,c,d
1,2,3,4
2,1,5,6
54,3,1,12
1,2,3,4
结果:
问题可能出在您从其他服务下载的 csv 文件上。
关于node.js - Node : Hit endpoint that returns a CSV file and send the contents to client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42612587/