我给出了一个返回CSV文件的端点。我想点击那个终点,读取数据,然后发送给客户端。这就是我现在所拥有的。
app.get('/data', (req, res) => {
request('foo.com/downloadCSV', (error, response, body) => {
res.send(csvToJson(body));
});
});
所以在前端,我点击' / data'然后使用请求库进行调用以获取CSV数据。 CSV的正文位于' body中。 ' csvToJson'函数只是将数据格式化为数组/ json。
当我在我的客户端上安装响应时,我的身体是: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(','));
});
}
答案 0 :(得分:0)
我已经尝试过您的代码,但它确实有效。在公共文件夹中,我创建了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!')
})
Sample.csv文件:
a,b,c,d
1,2,3,4
2,1,5,6
54,3,1,12
1,2,3,4
结果:
问题可能在于您从其他服务下载的csv文件。
答案 1 :(得分:0)
My React前端:
componentDidMount() {
fetch('/data').then(response => {
var decoder = new TextDecoder();
var reader = response.body.getReader();
// read() returns a promise that resolves
// when a value has been received
reader.read().then(function processResult(result) {
if (result.done) return;
console.log(
decoder.decode(result.value, {stream: true})
);
// Read some more, and recall this function
return reader.read().then(processResult);
});
});
}
这将结束ReadableStream并从中获取数据。