我试图确定何时节点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()。该字符串将被写入流,但是仍然没有回调。
为什么此事件不会被解雇?
谢谢。
最佳答案
gridfs-stream
模块主要是为节点0.8.x
及以下节点设计和编写的,并且不使用节点> = stream2
中require('stream').WritableStream
提供的0.10.x
样式方法。因此,它不会获得标准化的finish
事件。发出finish
取决于模块实现本身,而显然不会。