2013-06-01 49 views
0

我的代碼存在一些流問題,我不知道如何解決。Node.JS轉換流 - 數據丟失

代碼摘錄:http://gist.github.com/5689522

從本質上講,我有一對夫婦變換父裏面流變換流,但我有問題一起將數據傳遞,因爲我使用的是第一個流推( S0),並且因此僅將數據直接地注入到第二流(S1),並且導致錯誤。通常我會使用.pipe()來連接流,但我不知道如何從變換流中執行此操作,因爲我想管輸入,而不是輸出,並且_transform函數僅將單個塊(緩衝區)作爲論據。

任何想法如何做這樣的事情?

回答

0

從文檔push

注:此功能應該由可讀的實現者調用,而不是由消費者可讀流。

既然你不打電話,在的ParserStream實施,你不應該叫_s0Stream.push,你應該做_s0Stream.write。在這種情況下,你可能也想通過你的done回調。

2

你需要收集塊一起

var data='', tstream = new stream.Transform(); 
tstream._transform = function (chunk, encoding, done) { 
    data += chunk.toString(); 
    done(); 
}; 

然後重新分配_flush功能:

tstream._flush = function(done){ 
    data += 'hola muheres'; 
    this.push(data); 
    done(); 
}; 

這樣一起:

req.pipe(anotherstream).pipe(tstream).pipe(response); 

=> 「somedata」 =>「somedatahola muheres「