2014-01-05 6 views
0

나는 Node.js에서 스트림을 사용한 적이 없으므로 사소한 일이라면 사전에 사과드립니다.WritableStreams에 기록하는 것으로 ReadableStream 받기


저는 ya-csv 라이브러리를 사용하여 CSV를 만듭니다. 내가 알고있는 것처럼,이 쓰기 가능한 Stream을 받아 내가 레코드를 추가 할 때 쓰는

csvwriter = csv.createCsvStreamWriter(process.stdout) 

:이 같은 라인을 사용합니다.


전자 메일 첨부 파일로이 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를 변환하는 유일한 작성 노드입니다. 더 나은 방법이 있다면 확실히 문서화되지 않았습니다. – JJJollyjim