2013-12-15 4 views
2

У меня есть файл csv, содержащий около 10 тыс. Записей. Мне нужно получить его один за другим в моем приложении nodejs.Получить данные из файла CSV в nodejs

Сценарий есть, когда пользователь нажимает кнопку «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 («строка») читает полный файл по строкам. Мне нужно прочитать каждую строку после получения запроса от клиента. – 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! 
    }) 
Смежные вопросы