Я создаю приложение MERN, в котором пользователь может загружать продукты, включая сведения о них, а также изображения в виде изображений с помощью multer.
Детали хранятся в базе данных mongo, а изображения хранятся в реакции / клиенте / внешнем интерфейсе.Я могу нормально выполнять все грубые операции с базой данных, но хотел бы иметь возможность удалять изображения, хранящиеся во внешнем интерфейсе.
const router = express.Router();
const multer = require("multer");
const storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, "./client/src/components/prodImg/");
},
filename: function(req, file, cb) {
cb(null, Date.now() + file.originalname);
}
});
const upload = multer({ storage: storage });
//Init in Prod model
const Prod = require("../../models/Prod");
// @route GET api/prods
// @desc Get all Prod
// @access public
router.get("/", (req, res) => {
Prod.find()
.sort({ date: -1 })
.then(prods => res.json(prods));
});
// @route POST api/prods
// @desc Add a Prod
// @access public
router.post(
"/",
upload.fields([
{
name: "img1",
maxCount: 1
},
{
name: "img2",
maxCount: 1
},
{
name: "img3",
maxCount: 1
},
{
name: "img4",
maxCount: 1
}
]),
(req, res) => {
const newProd = new Prod({
cat: req.body.cat,
name: req.body.name,
description: req.body.description,
img1: req.files.img1[0].path,
date: Date.parse(req.body.date)
});
try {
newProd.img2 = req.files.img2[0].path;
} catch {}
try {
newProd.img3 = req.files.img3[0].path;
} catch {}
try {
newProd.img4 = req.files.img4[0].path;
} catch {}
newProd.save().then(prod => res.json(prod));
}
);
// @route DELETE api/prods
// @desc Delete a Prod
// @access public
router.delete("/:id", (req, res) => {
Prod.findById(req.params.id)
.then(prod => prod.remove().then(() => res.json({ success: true })))
.catch(err => res.status(404).json({ success: false }));
});