Varias respuestas sugeridas a esta pregunta se han perdido por completo.
Este módulo puede ayudar https://www.npmjs.org/package/JSONStream
Sin embargo, vamos a suponer que la situación descrita y escribir el código de nosotros mismos. Está leyendo desde un MongoDB como una secuencia, con ObjectMode = true de forma predeterminada.
Esto dará lugar a problemas si intenta transmitir directamente al archivo, algo así como el error "No válido de cadena/búfer".
La solución a este tipo de problema es muy simple.
Simplemente ponga otra Transformación entre legible y escribible para adaptar apropiadamente el Objeto legible a una Cadena escribible. Código
Muestra Solución:
var fs = require('fs'),
writeStream = fs.createWriteStream('./out' + process.pid, {flags: 'w', encoding: 'utf-8' }),
stream = require('stream'),
stringifier = new stream.Transform();
stringifier._writableState.objectMode = true;
stringifier._transform = function (data, encoding, done) {
this.push(JSON.stringify(data));
this.push('\n');
done();
}
rowFeedDao.getRowFeedsStream(merchantId, jobId)
.pipe(stringifier)
.pipe(writeStream).on('error', function (err) {
// handle error condition
}
¿Por qué necesita un ReadStream() cuando solo estamos interesados en escribir cosas en un archivo? – krjampani
@nab gracias. Cuando se canaliza, parece que no está agregando '\ r \ n' para el avance de línea, así que concat cada línea a uno ... – loretoparisi