Ich versuche, unten mit dem Code eine Datensammlung, um mehrere Dateien zu streamen:Node - Lesbare Stromrohr() vorherige Ströme in einer for-Schleife überschreiben
for (var key in data) {
// skip if collection length is 0
if (data[key].length > 0) {
// Use the key and jobId to open file for appending
let filePath = folderPath + '/' + key + '_' + jobId + '.txt';
// Using stream to append the data output to file, which should perform better when file gets big
let rs = new Readable();
let n = data[key].length;
let i = 0;
rs._read = function() {
rs.push(data[key][i++]);
if (i === n) {
rs.push(null);
}
};
rs.pipe(fs.createWriteStream(filePath, {flags: 'a', encoding: 'utf-8'}));
}
}
Allerdings habe ich am Ende alle Dateien immer sein bevölkerten mit den gleichen Daten, die das Array für den letzten Schlüssel in data
Objekt ist. Es scheint, dass der Lesestream für jede Schleife außer Kraft gesetzt wird, und der pipe()
zum schreibbaren Datenstrom startet erst, wenn die for-Schleife beendet ist. Wie ist das möglich?
für var in der ersten Schleife zu ändern versuchen – Kieper