• 10 hours
  • Medium

Free online content available in this course.

course.header.alt.is_video

course.header.alt.is_certifying

Got it!

Last updated on 11/24/21

Expand the Back End's Delete Function

Log in or subscribe for free to enjoy all this course has to offer!

Modify the DELETE Route

As a final touch to the file handling in your back end, make sure that whenever a  Thing  is deleted from the database, the corresponding image file also gets deleted.

In your  stuff  controller, import the Node  fs  package:

const fs = require('fs');

Now you can modify your  deleteThing()  function:

exports.deleteThing = (req, res, next) => {
Thing.findOne({_id: req.params.id}).then(
(thing) => {
const filename = thing.imageUrl.split('/images/')[1];
fs.unlink('images/' + filename, () => {
Thing.deleteOne({_id: req.params.id}).then(
() => {
res.status(200).json({
message: 'Deleted!'
});
}
).catch(
(error) => {
res.status(400).json({
error: error
});
}
);
});
}
);
};

In this function:

  • Use the ID you receive as a parameter to access the corresponding  Thing  in the database.

  • Use the fact that you know there is an  /images/  segment in your image URL to separate the file name.

  • Then use the  fs  package's  unlink  function to delete that file, passing it the file to be deleted and the callback to be executed once that file has been deleted.

  • In the callback, implement the original logic, deleting the  Thing  from the database.

Your API can now successfully handle all CRUD operations containing files: when a user creates a new  Thing , updates an existing  Thing , or deletes a  Thing !

Let's Recap!

  • The built-in  fs  package exposes methods for interacting with the server's file system.

  • fs'  unlink()  method lets you delete a file from the file system.

What You've Learned in This Course

You're nearly finished. Well done!

Let's have a look at what you've learned:

Example of certificate of achievement
Example of certificate of achievement