2014-01-05 32 views
0

我從來沒有在Node.js中使用過流,所以如果這很簡單,我很抱歉。從寫入WritableStreams的東西獲取ReadableStream


我正在使用ya-csv庫來創建CSV。我用這樣一行:

csvwriter = csv.createCsvStreamWriter(process.stdout) 

據我瞭解,這需要一個可寫Stream,當我添加一條記錄寫入到它。


我需要使用此CSV作爲電子郵件附件。

nodemailer的文檔,這裏是如何做到這一點:

attachments: [ 
    { // stream as an attachment 
     fileName: "text4.txt", 
     streamSource: fs.createReadStream("file.txt") 
    } 
] 

據我瞭解,這需要一個可讀Stream並從中讀取。


其中存在問題。我需要一個可讀的Stream,我需要一個可寫的Stream,但我沒有一個Stream

這將是很好,如果ya-csv有:

csvwriter = csv.createReadableCsvStream() 

但事實並非如此。是否有一些內置的流可用於寫入任何內容?我尋找一個沒有成功的圖書館(雖然有幾件事情可以發揮作用,但看起來像矯枉過正)。

回答

1

您可以使用直通流爲:

var PassThrough = require('stream').PassThrough 
var stream = new PassThrough 
var csvwriter = csv.createCsvStreamWriter(stream) 

現在你可以從任何寫入

+0

我的直通緩衝區永遠不會觸發一個「結束」事件stream讀取。我實際上在'ya-csv'文檔*或源代碼*中找不到任何關於如何指定我已經完成寫入數據的任何內容,這很奇怪。有任何想法嗎? – JJJollyjim

+0

好吧,它看起來像這個庫是一種粗俗。嘗試在'stream'中調用'end()'。 – vkurchatkin

+0

這當然是。不幸的是,它似乎是最好的選擇 - AFAICT唯一的編寫節點-Csv所做的是改變現有的CSV,如果有更好的方式,它肯定沒有很好的文檔。 – JJJollyjim