2014-04-10 72 views
2

我試圖確定當一個節點WriteStream完成寫作:不能得到一個節點流的終點事件,火災

var gfs = GFS(db); 

var writeStream = gfs.createWriteStream(
{ 
    filename: "thismyfile.txt", 
    root: "myfiles" 
}); 

writeStream.on("finish", function() 
{ 
    console.log("finished"); 
    response.send({ Success: true }); 
}); 

writeStream.write("this might work"); 
writeStream.end(); 

console.log("end"); 

在我的控制檯,我看到了「結束」,但從來沒有「完成」 ,而且從來沒有迴應。然而,該流正在寫入,並且似乎正在完成(我在數據庫中看到完成的文件)。這甚至不是解僱。我試着將「這可能工作」移動到調用end()和刪除write(),我也試着將一個字符串傳遞給end()。該字符串被寫入流,但仍然沒有回調。

爲什麼這個事件不會被解僱?

謝謝。

+0

你使用什麼版本的節點?什麼是'GFS'? – loganfsmyth

+0

感謝您的回覆。我找出了這個問題。 GFS是gridfs-stream,它實際上並沒有「完成」事件。只有一個「關閉」事件。 –

回答

1

gridfs-stream的模塊設計和主要用於節點0.8.x和以下書面和不使用由在節點> = 0.10.xrequire('stream').WritableStream提供的stream2式的方法。正因爲如此,它沒有得到標準化的finish事件。這取決於模塊的實現本身發出finish,它顯然沒有。