Một số câu trả lời được đề xuất cho câu hỏi này đã bỏ lỡ tất cả các điểm về luồng.
Module này có thể giúp https://www.npmjs.org/package/JSONStream
Tuy nhiên, cho phép giả sử tình hình như mô tả và viết mã chính mình. Bạn đang đọc từ MongoDB dưới dạng luồng, với ObjectMode = true theo mặc định.
Điều này sẽ dẫn đến sự cố nếu bạn cố gắng phát trực tiếp vào tệp - chẳng hạn như "lỗi không phải chuỗi không hợp lệ/bộ đệm" không hợp lệ.
Giải pháp cho loại vấn đề này rất đơn giản.
Chỉ cần đặt một chuyển đổi khác ở giữa có thể đọc được và có thể ghi để thích ứng với đối tượng có thể đọc được với một chuỗi có thể ghi một cách thích hợp.
Mẫu Mã Giải pháp:
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
}
Tại sao bạn cần một ReadStream() khi chúng tôi chỉ quan tâm đến việc viết những thứ vào một tập tin? – krjampani
@nab cảm ơn bạn. Khi đường ống có vẻ như nó không thêm '\ r \ n' cho nguồn cấp dữ liệu dòng, vì vậy hãy concat mỗi dòng vào một ... – loretoparisi