javascript - 写入结束后,nodejs gridFS writestream报错

标签 javascript node.js mongodb

使用下面的代码,我可以将图像上传到 mogodb 一次,如果我第二次尝试,则会出现错误。

我做了一些研究,因为写入流正在关闭 NODEJS writeStream error

conn.once('open', function () {

    var gfs = Grid(conn.db, mongoose.mongo);

    app.post('/upload', function(req,res){

        form.on('part', function(part){
            if(!part.filename) return;
            size = part.byteCount;
            fileName = part.filename;
        });

        form.on('file', function(name,file){

            var tempfile = file.path;
            var origname = fileName;

            var writestream = gfs.createWriteStream({ filename: origname });

            fs.createReadStream(tempfile).on('end', function () {
                res.send('<p><h1>Upload Complete!</h1><p>');
            }).on('error', function () {
                res.send('Error, upload failed!');
            }).pipe(writestream);

        });

        form.parse(req);

    });


    app.get('/image/:id', function(req,res){

        console.log(req.params.id)
        gfs.createReadStream({_id:req.params.id}).pipe(res);

    });

});

错误消息如下所示

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: write after end
    at writeAfterEnd (C:\Users\Michael\Desktop\Chat-App\node_modules\multiparty\node_modules\readable-stream\lib\_stream_writable.js:161:12)
    at Form.Writable.write (C:\Users\Michael\Desktop\Chat-App\node_modules\multiparty\node_modules\readable-stream\lib\_stream_writable.js:208:5)
    at write (_stream_readable.js:582:24)
    at flow (_stream_readable.js:591:7)
    at _stream_readable.js:559:7
    at process._tickCallback (node.js:419:13)

看来我的代码多方存在问题。我的问题是,如果我更改 post 方法以在 id 上运行代码,该如何解决这个问题?

最佳答案

替换

var form = new multiparty.Form();

里面

app.post('/upload', function(req,res){...});

不要全局声明var form。它应该初始化每个发布请求

关于javascript - 写入结束后,nodejs gridFS writestream报错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25600312/

相关文章:

javascript - 如何在 Sequelize 中的导入模型中创建自定义方法或函数

javascript - 在 Highcharts 中显示/隐藏 plotband - Javascript

node.js - Electron 阅读线

windows - 如何回复快速 javascript 测试

javascript - 为什么我的 javascript 函数没有被调用

php - 客户端还是服务器端处理?

javascript - GET 请求适用于浏览器的 REST 客户端,但不适用于 JS

node.js - 使用 Angular 和 Nodejs 将文件保存到 mongodb

arrays - 如何在 MongoDb Compass 查询内部对象集合内执行大于运算符

java - 如何操作$concat 使用spring mongodb