更新阵列中的单个图像将所有图像替换为媒体阵列图像MongoDB中的更新图像

时间:2018-07-09 09:58:28

标签: angularjs node.js mongodb

我正在尝试上传新图像代替旧图像。

现在我在编辑单个图像时具有多个图像:我将对象ID,项目ID和old_file名称从.ts文件传递到服务文件,然后将服务文件传递给API。

当前,在上传文件时,它将旧媒体图像替换为新图像,但将猫鼬中的媒体数组替换为单个文件。

moongose媒体阵列:

"media_data" : [ 
  "1531126685017_Fri Nov 03 2017 12_05_42 GMT+0530 (IST)_test.jpg", 
  "1531126705706_Fri Nov 03 2017 12_45_52 GMT+0530 (IST)_swolemate.PNG", 
  "1531126714516_Fri Nov 03 2017 12_40_52 GMT+0530 (IST)_Sprint.png"
],

api代码:

router.post('/updateMedia', upload.any(), function(req, res, next) {
  var postid = req.body.postId;
  var userid = req.body.userId;
  var mediaid = req.body.itemId;
  var oldfilename = req.body.oldfile;
  console.log(oldfilename);
  //console.log(oldfilename);
  var files = req.files;
  var length = req.files.length;
  var extensions = ['.gif', '.jpg', '.jpeg', '.png', '.mov', '.mp4', '.mkv', '.avi', '.webm'];
  for (var media = 0; media < length; media++) {
    var file = files[media].filename;
    var ext = path.extname(files[media].filename);
    var newMedia = new Media();
    newMedia.media = file;
    newMedia.user_id = userid;
    newMedia.post_id = postid;
    newMedia.update(function(err, dataId) {
      Post.updateOne({
          _id: postid
        }, {
          "media_data": file
        }, {
          $addToSet: {
            "media_data.$": oldfilename
          }

        })
        .exec(function(err, posts) {
          if (posts) {
            res.status(200).json({
              success: true,
              message: "updated successfully.",
              status: 200
            });
          } else {
            res.status(500).json({
              success: false,
              message: "Internal error occurred.",
              status: 500

            })
          }
        });
    });
  }
});

html代码:

<input id="file" multiple (change)="editMediaItems(post.id,mediaFile.itemId,mediaFile.post,$event, i)" type="file">

ts代码:

upload_media(data): Observable<any>{    
  let newdata = new FormData();
  newdata.append('postId', data.postId);
  newdata.append('userId', data.id);
  newdata.append('itemId', data.itemId);
  newdata.append('upload_file', data.upload_file);  
  newdata.append('oldfile', data.oldfile);      
  let url = this.api_url.concat('updateMedia');
  return this.http.post(url, newdata ).map(response => response);
}

0 个答案:

没有答案