2017-03-05 87 views
0

我收到了一個返回CSV文件的端點。我想要達到這個目的,讀取數據並將其發送給客戶端。這就是我現在所擁有的。節點:命中端點,返回CSV文件並將內容發送到客戶端

app.get('/data', (req, res) => { 
    request('foo.com/downloadCSV', (error, response, body) => { 
    res.send(csvToJson(body)); 
    }); 
}); 

因此,在前端,我點擊'/ data',然後使用請求庫進行調用以獲取CSV數據。 CSV的正文位於「正文」中。 '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(',')); 
    }); 
} 
+0

在發送給客戶端之前檢查服務器端的正文,同時errores/response可能會有幫助信息 – Myonara

+0

正文顯示我正是我想要的 – user2465134

回答

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 

結果:

enter image description here

問題可能是與您從其他服務下載CSV文件。

+0

獲取錯誤:jsonStream.on不是函數。我發佈了我的csvToJson函數編輯 – user2465134

+0

你使用哪個庫進行csv到json的轉換? – hya

+0

我沒有使用任何。我發現一個使用lodash的功能。該功能位於原始文章中。 – user2465134

0

我的陣營前端:

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和獲取數據出來。

相關問題