更新图像时,它不会保存在数据库中

时间:2016-03-01 11:56:02

标签: javascript angularjs node.js mongodb express

我正在使用Formidable和Node.js的fa-extra模块在MongoDB中存储文件。插入时它正在工作。但是我没有得到如何使用Formidable进行更新。

form.on('file',function(field, file){
  var temp = file.path;
  var fileName = file.name;
  var fileName = file.name;
  var location     = 'images/';
  var cpLocation   = 'empDetails/images/';
  empData.imgSize = file.size;*here empData is my instance of model*
  empData.imgType = file.type;
  empData.picFile = location+fileName;  **picFile is my mongodb row name in collection**
  fs.copy(temp,cpLocation+fileName ,function(err){
    if(err)
    {
      console.log(err);
    }
  });

});

form.on('end',function(fields, files){
  empData.save(function(err,resobj){
    if(err)
    {    
      throw err;
    }
  });
});

empData是我的模型的对象,用于存储这些文件。到此为止没有问题。但我不知道如何在MongoDB中更改图像和更新。我的更新查询如下。

exports.updateEmpData=function(req,res){
  var temp = req.param('empID');
  console.log(temp,'hjsdbjhdvbdhfvbdhbvj');

  EmpDetail.findByIdAndUpdate({_id:temp},{$set:{"picFile":req.body.picFile},
    function(err,obj){
      if(err){
        return err;
      }
      else{
        res.json(obj);
      }
    });
  };

1 个答案:

答案 0 :(得分:0)

您的findByIdAndUpdate方法看起来不对。正确的语法是:

Model.findByIdAndUpdate(id, updateObj, {new: true}, function(err, model) 

因此,在您的情况下,语法将是:

EmpDetail.findByIdAndUpdate(temp,{$set:{"picFile":req.body.picFile},
function(err,obj){
  if(err){
    return err;
  }
  else{
    res.json(obj);

  }
});

参考:Link