I am saving user data with their image and for storage, I am using s3 bucket of aws. In my upload API, I am saving the URL of the image in the database. I want to implement that if I delete the user the image also be deleted from the s3 bucket. I wrote the delete API too but I need some guidance on how to use it? here is my s3 delete API code.
delete a file from s3
function deleteFileStream(fileKey, next) {
const deleteParams = {
Key: fileKey,
Bucket: bucket_name,
}
s3.deleteObject(deleteParams, (error, data) => {
next(error, data)
})
}
exports.deleteFileStream = deleteFileStream;
my router controller
router.delete("/deleteImage/:key", (req, res) => {
const key = req.params.key
deleteFileStream(key, (error, data) => {
if (error) {
return res.send({ error: "Can not delete file, Please try again later" });
}
return res.send({ message: "File has been deleted successfully" });
});
})
those apis are working fine in postman. I need some guidance on how to use it in my delete user route so that if I delete a user the image associated with also deleted from my s3 bucket.
my delete user API
function user_delete(req, res) {
User.findByIdAndRemove(req.params.id)
.then(data => {
if (!data) {
return res.status(404).send({
success: false,
message: "User not found with id " + req.params.id
});
}
res.send({
success: true,
message: "User successfully deleted!"
});
})
};
router.delete('/delete/:id', deleteUser);