2015-12-24 38 views
0

如何将一些文件保存到猫鼬中? 例如我有一个路线POST方法/GET方法/。 过帐到/应将发送的文件保存到MongoDB数据库(猫鼬),并获得/应发送保存的文件。如果文件是一个图像我如何将它作为图像发送给客户端? (从用户保存原始文件是否是一个好习惯,或者我应该将它们保存在mongodb中 - 如果是这样的话:如何?)。保存文件并将它们发送到客户端(NodeJS/Express/MongoDB/Mongoose)

+0

如果可能的话,我建议你只在磁盘上存储的图像,而不是将其保存到数据库中,这是相当少麻烦。 –

+0

我认为这不是一个好主意保存原始图像 –

+0

任何这是为什么? –

回答

2

首先很明显,您应该有针对您的mongoDB的架构。 你可以把它在SCHEMA.js文件是这样的:

module.exports = { 
     model: function(Schema) { 
      return new Schema({ 
      _id: { type: String, index: true, unique: true }, 
      updateDate: { type: Date, default: Date.now }, 
      data: String 
      }) 
      } 
    } 

,那么你必须为你的要求,你可以如下操作:

router.post('/', function(req, res){ 
    var data = req.body.data; 
    SCHEMA = require('/YOUR/SCHEMA/PATH').SCHEMA; 

    SCHEMA.update({ 
     _id: data.id 
    }, { 
     data: data 
    }, { 
     upsert: true 
     }, function (err) { 
     if (err) {console.error('subs-on-userapps> failed update token, err=',err);} 
    }); 
    }) 

在上面的部分,你得到的数据格式要求,然后将其插入到你mongoDB。

** .update首先在第一部分搜索你的数据并用upsert:true 选项插入数据如果以前不存在的话。

对于有权访问你的数据,你有其他的途径与方法Get如此:

 router.get('/', function(req, res){ 

      SCHEMA.findOne({QUERY}) 
       .execQ() 
       .then(function(result) { 
        res.json({result: result}) 
       }); 

     }) 
+0

这并不是我所需要知道的...我知道如何处理请求或创建模式,我只需要知道如何存储用户使用文件输入发送的文件,并将它们作为原始文件而不是字符串数据发回。 –

+1

有关存储此类二进制数据的详细信息,请参阅[GridFs](https://docs.mongodb.org/manual/reference/gridfs/)文档。 –

相关问题