2017-03-29 8 views
0

mongoose와 GridFS를 사용하여 MongoDB에 파일을 쓰려고합니다. 그러나 gridfs writestream은 이벤트를 종료하거나 종료하지 않습니다. 또한 오류 이벤트가 발생하더라도 오류 이벤트가 발생하지 않습니다. 내 nodejs 버전은 4.4.5입니다. 코드는 다음과 같습니다 : 나는 시도를 많이 한 후 해결책을 알아낼 수writestream의 이벤트를 닫거나 종료합니다. gridfs를 실행하지 않았습니다.

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; 
}; 

답변

0

. 문제를 일으키는 몽구스 연결이었습니다. gridfs-stream은 직접 Mongo-DB 연결을 필요로합니다. 나는 그들이 능률적 인 일을하고 몽구스 연결의 사용을 용이하게했으면 좋겠다.