【问题标题】:close or finish event of writestream not fired gridfswritestream 的关闭或完成事件未触发 gridfs
【发布时间】:2017-08-23 09:10:01
【问题描述】:

我正在尝试使用 mongoose 和 GridFS 将文件写入 MongoDB。 但是,gridfs writestream 不会触发任何事件 - 关闭或完成。 此外,它甚至不会触发“错误事件”(以防万一有任何错误)。我的 nodejs 版本是 4.4.5 。 代码如下:

var mongoose = require('mongoose');
var formidable = require('formidable'),
    http = require('http'),
    util = require('util'),
    fs = require('fs-extra');
var Regex = require("regex");
var fs = require('fs');
var path=require('path');
var grid =require("gridfs-stream");

var createRequirement = function (req, res) {
    var form = new formidable.IncomingForm({
        uploadDir: __dirname + '/upload'
    });
    form.multiples = true;
    form.keepExtensions = true;
    files = [],
    fields = [];
    form.on('field', function (field, value) {

    })

    form.on('file', function (field, file) {
            console.log(file.name);
            console.log('File uploaded : ' + file.path);
            grid.mongo = mongoose.mongo;
            var gfs = grid(db.db);
            var writestream = gfs.createWriteStream({
                filename: file.name,
                mode: 'w'
            });
            fs.createReadStream(file.path).pipe(writestream);
            //Below event is not fired.
            writestream.on('finish', function (file) {
                Company.findOne({
                    "users.userName": req.user.userName
                }).then(function (data) {
                    var company = data;
                    if (!company) {
                        return res.status(404).send({
                            'Not Found': 'Company data not found'
                        });
                    } else {

                        Contact.findByIdAndUpdate(
                            file._id, {
                                $push: {
                                    "attachments": {
                                        id: file._id
                                    }
                                }
                            }, {
                                safe: true,
                                upsert: true,
                                new: true
                            },
                            function (err, model) {
                                console.log(err);
                            }
                        );

                    }
                });
            })


});
form.parse(req);
    return;
};

【问题讨论】:

    标签: node.js express mongoose mean-stack gridfs-stream


    【解决方案1】:

    经过多次尝试,我可以找出解决方案。 这是导致问题的猫鼬连接。 gridfs-stream 需要直接的 Mongo-DB 连接。 我希望他们简化了事情并促进了 Mongoose 连接的使用。

    【讨论】:

    • 你好。我面临同样的问题。你能解释一下什么是直接数据库连接吗?
    猜你喜欢
    • 2015-04-14
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 2019-05-18
    • 1970-01-01
    • 2017-01-24
    相关资源
    最近更新 更多