2013-12-15 65 views
2

我有一個csv文件,其中包含大約10k條記錄。我需要在我的nodejs應用程序中逐一檢索它。從nodejs中的CSV文件中獲取數據

情景是當用戶第一次點擊按鈕「X」時,異步請求被髮送到nodejs應用程序,它從CSV文件的第一行獲取數據。當他再次點擊時,它會顯示來自第二行的數據並繼續進行。

我試過使用fast-csv和懶惰,但他們都讀完整的文件。他們是我能達到時間的一種方式嗎?

+0

有一個[插件](https://npmjs.org/package/line-by-line)爲 – adeneo

+0

@adeneo ..是不是有什麼辦法做到這一點沒有任何外部插件? – casper123

回答

4

節點配備了readline模塊在它的核心,讓您在處理由線可讀的流線。

var fs = require("fs"), 
    readline = require("readline"); 

var file = "something.csv"; 

var rl = readline.createInterface({ 
    input: fs.createReadStream(file), 
    output: null, 
    terminal: false 
}) 

rl.on("line", function(line) { 
    console.log("Got line: " + line); 
}); 

rl.on("close", function() { 
    console.log("All data processed."); 
}); 
+0

rl.on(「line」)逐行讀取完整的文件..我需要從客戶端獲取請求後讀取每一行 – casper123

+0

因此,您希望在獲取HTTP請求時逐行讀取文件或什麼?我想我錯過了你想說的話。用例子來更新你的問題? –

0

我認爲多米尼克塔爾模塊'拆分'就足夠了。 它逐行分解流。 https://npmjs.org/package/split

fs.createReadStream(file) 
    .pipe(split()) 
    .on('data', function (line) { 
     //each chunk now is a seperate line! 
    })