node.js - 无法触发 Node 流的完成事件

标签 node.js stream

我试图确定 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/

相关文章:

node.js - ExpressJs、Node Js、Passport - 注销后退按钮

java - 通过 tcp (Java) 传输文件和附加数据

python - .NET Core 2.0 和 Angular 初始应用程序构建失败 - 找不到 python 后跟 JavaScript 运行时错误

javascript - CkEditor 无法设置未定义的属性 'dir'

node.js - Node js SOAP 库与 DateAdvance 一词相关的问题

c++ - 在 C 或 C++ 中是否有等效于 setvbuf() 的方法来处理宽字符?

IOS UI 在套接字连接期间卡住

javascript - Mongoose 更新条件匹配错误的对象

c# - 将数据从 Azure Blob 流式传输回客户端

为 mjpeg 流创建正确的 header 和流信息