2014-04-10 102 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,它显然没有。