使用mongoose,Express 4.0将映像存储到MongoDB中

时间:2015-05-19 12:20:46

标签: node.js mongodb mongoose

我使用./upload/

成功将文件上传到multer的Nodejs服务器
app.use(multer({ dest : './uploads/',
    rename: function(fieldname, filename){
        return filename + '^' + Date.now(); 
    },
    onFileUploadStart: function(file){
        console.log(file.originalname + ' is starting...');
    }, 
    onFileUploadComplete: function(file){
        console.log(file.fieldname + ' uploaded to ' + file.path);
        done=true;
    }
}));

所以现在,我必须将此图像文件存储到Mongodb。

我一直在寻找适合我的设置的例子,但我不能。

1 个答案:

答案 0 :(得分:0)

请记住,MongoDB中的每个文档都必须小于16MB,如果它们大于您使用GridFS的文档,那么您只需将图像保存为二进制数据。这在gist上有所描述。您使用的示例的要点是:

// Your schema should be set to something like this
var schema = new Schema({
  img: { data: Buffer }
});

// a is a new model of the schema
a.img.data = fs.readFileSync(imgPath);
a.save(function (err, a) {

如果您不想处理文件系统上的文件,请将multer的inMemory设置设置为true。然后使用buffer对象中的multer

app.use(function() {
  var img = multer({ inMemory: true})
  a.img.data = img.buffer;
  a.save(cb);
});