2016-09-07 7 views
1

꿀꺽 꿀꺽한 작업에 쓸 수있는 스트림 배열이 있습니다. 병합하고 하나의 스트림을 반환하고 싶습니다. 이 작업을 위해 병합 스트림 노드 모듈을 사용하고 있습니다. 그래도 다음과 같은 오류가 발생합니다.쓰기 가능한 노드 스트림을 하나의 스트림으로 병합

[14:22:56] Error: Cannot pipe, not readable 
    at WriteStream.Writable.pipe (_stream_writable.js:161:22) 
    at add (C:\workspace\mediafly-viewer\desktop\node_modules\merge-stream\index.js:28:12) 
    at Array.forEach (native) 

쓰기 가능한 스트림을 병합 할 수 있습니까? 그렇다면 어떻게해야합니까?

다음은 내가 약속 한 내용입니다.

const promises = streams.map(s => new Promise((resolve, reject) => s.on('finish', resolve).on('error', reject))); 

return Promise.all(promises); 
+0

읽을 수없는 스트림 (예 : 쓰기 전용 스트림)을 쓰기 가능한 스트림으로 파이프 할 수 없습니다. 쓰기 가능한 하나의 스트림을'transform' (duplex) 스트림으로 바꾸는 것을 고려해 주시겠습니까? 아니면 불가능합니까? – Mike

+1

사실, 나는 잘 모르겠다. 목표는 모든 스트림 작성이 완료되면 알림을받는 것입니다. 나는 이것을 약속으로 끝낼 수 있었지만 매우 깨끗하지는 않습니다. 여기에 가능한 해결책으로 게시하십시오. –

답변

0

문제는 Transform stream로서 취급 merge-stream 각 스트림, 즉 그것이 쓰기 스트림 callpipe을 시도하는, 그러나 쓰기 스트림 pipe 방법 만 write 없다. 이 문제를 해결하기 위해 할 수있는 일은 쓰기 작업에 Transform streams을 사용하거나 finish 이벤트를 기다리기 위해 약속을 사용하여 수행 한 것입니다.