我试图确定何时节点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及以下节点设计和编写的,并且不使用节点> = stream2require('stream').WritableStream提供的0.10.x样式方法。因此,它不会获得标准化的finish事件。发出finish取决于模块实现本身,而显然不会。

10-08 09:43