保存文件并将其发送到客户端(NodeJS / Express / MongoDB / Mongoose)

时间:2015-12-24 17:23:34

标签: node.js mongodb express mongoose

如何在mongoose中保存一些文件? 例如,我有POST方法/GET方法/的路由。 发送到/应该将发送的文件保存到MongoDB数据库(mongoose),而获取/应该发送保存的文件。如果文件是图像,我如何将其作为图像发送到客户端? (从用户那里保存原始文件是一个好习惯,还是应该将它们保存在mongodb中 - 如果是这样的话:怎么做?)。

1 个答案:

答案 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})
               });

      })