我试图确定 Node 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
模块主要是为 Node 0.8.x
及更低版本设计和编写的,不使用 stream2
风格的方法由 Node >= 0.10.x
中的 require('stream').WritableStream
提供。因此,它不会获得标准化的 finish
事件。由模块实现本身发出 finish
信号,但它显然没有这样做。
关于node.js - 无法触发 Node 流的完成事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22977120/