Mongo / Mongoose / Multer / FS для удаления изображения - PullRequest
0 голосов
/ 23 октября 2018

В приведенном ниже коде: -

var Image = mongoose.model("Image", imageSchema); //Assuming all the configuration of packages are done
app.delete("/element/:id", function(req, res) {
  Image.findByIdAndRemove(req.params.id, function(err) {
    if(err) {
      //Error Handling
    } else {
      fs.remove(path, function(err) { //where path is the path of the image and fs is fs-extra
        if(err) {
          //Error Handling
          } else {
            res.send("Image deleted!");
          }
      });
    }
  });
});  

Предположим, Mongoose успешно удалил данные из базы данных.Но fs (т.е. fs-extra) не может удалить изображение.Тогда будет сценарий, в котором данные удаляются, но изображение все еще существует.Так есть ли способ справиться с такой ситуацией?

1 Ответ

0 голосов
/ 23 октября 2018

Используйте fs.unlink вместо fs.remove.

var Image = mongoose.model("Image", imageSchema); //Assuming all the configuration of packages are done
app.delete("/element/:id", function(req, res) {
  Image.findByIdAndRemove(req.params.id, function(err) {
    if(err) {
      //Error Handling
    } else {

fs.unlink(path+req.file.filename, (err) => {
        if (err) {
            console.log("failed to delete local image:"+err);
        } else {
            console.log('successfully deleted local image');                                
        }
});
    }
  });
});
...