Node.js/Express文件通过Mongoose上传到GridFS
关于这一职位: 基本上,我正在做我应该做的一切来保存上传到Mongo GridFS的文件。但是,Mongo GridFS数据库中似乎没有保存任何内容(没有块或文件)。我正在使用busboy解析传入的多部分数据,我已经验证了我正在通过Mongoose连接Mongo数据库。。。我只是在寻找一个评论,看看为什么没有被保存Node.js/Express文件通过Mongoose上传到GridFS,node.js,mongodb,express,mongoose,Node.js,Mongodb,Express,Mongoose,关于这一职位: 基本上,我正在做我应该做的一切来保存上传到Mongo GridFS的文件。但是,Mongo GridFS数据库中似乎没有保存任何内容(没有块或文件)。我正在使用busboy解析传入的多部分数据,我已经验证了我正在通过Mongoose连接Mongo数据库。。。我只是在寻找一个评论,看看为什么没有被保存 router.route('/doc') .post(function(req, resp, next) { var gfs = gridfs(mongo
router.route('/doc')
.post(function(req, resp, next) {
var gfs = gridfs(mongoose.connection);
var bb = new busboy({
headers: req.headers
});
bb.on('file', function(fieldname, file, filename, encoding, mimetype) {
var doc = new DocumentMeta();
doc.setFileName(filename);
doc.setMimetype(mimetype);
doc.setEncoding(encoding);
doc.insert(function(err) {
if(!err) {
var ws = gfs.createWriteStream({
_id: mongoose.Types.ObjectId().toString(),
filename: filename,
mode: 'w',
content_type: mimetype
});
ws.on('close', function(file) {
console.log('Doc Written to DB');
});
file.on('data', function(data) {
console.log('GOT DATA');
});
file.pipe(ws);
} else {
resp.json({success:false, msg: 'Error Creating Doc', data : { error : err.message }});
}
});
});
bb.on('finish', function() {
resp.json({success:true, msg: 'Successfully Uploaded Doc'});
});
req.pipe(bb);
});
我得到以下控制台输出:
Mongoose: fs.files.ensureIndex([ [ 'filename', 1 ] ]) { w: 1 }
GOT DATA
Mongoose: fs.chunks.ensureIndex([ [ 'files_id', 1 ], [ 'n', 1 ] ]) { w: 1 }
Mongoose: fs.files.findOne({ _id: ObjectId("56a16a383f6fbc877550752f") }) { w: 1, readPreference: 'primary' }
Mongoose: fs.chunks.remove({ files_id: ObjectId("56a16a383f6fbc877550752f") }) { w: 1, readPreference: 'primary' }
GOT DATA
GOT DATA
GOT DATA
GOT DATA
GOT DATA
POST /doc 200 756.218 ms - 50
我注意到mongoose调用了fs.chunks.remove。。。为什么它会尝试删除块?此外,GridFS写入流上从未调用“close”,因此我从未按预期输出“Doc write to DB”
任何指导都将不胜感激!谢谢