2014-01-05 43 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