Я сейчас пытаюсь передать файл, который выглядит примерно так:
Header
Title
Header
Title
...
То, как я его обрабатываю, происходит с потоком как таковым:
fs.createReadStream(filePath, streamOpts)
.pipe(split())
.on('data', parseLine(data) => ...);
Однако это разбивает файл на каждую строку, поэтому data
- это всего лишь одна строка следующей строки.Например,
parseLine(line) => { console.log(data); }
> "Header"
Я хочу разделить его и каким-то образом заменить data
на объект, например,
> "{ header: 'Header', title: 'Title' }"
Есть ли способ сделать это?Я думаю, что это потребовало бы получить две строки вместо одной во время pipe
, но я не могу понять, как.
Моя текущая методология следующая:
const fs = require('fs');
const split = require('split');
var isHeaderLine = true;
var currentItem = {};
var items = [];
// Read the line from the stream
function parseFileLine(line) {
if (isHeaderLine) {
currentItem.header = line
} else {
currentItem.title = line
items.push(currentItem);
}
}
// Read the file as a stream
// Break it into processable lines
function parseFileLines(filePath) {
const streamOpts = {
encoding: 'utf8',
};
fs.createReadStream(filePath, streamOpts)
.pipe(split())
.on('data', parseLine);
}
Однако я не чувствую, что это лучший способ сделать это.Есть ли лучший способ разделить и передать две строки одновременно, предпочтительно в виде объекта или в виде массива?