I used multer to save the file which uploaded by user in my middlewares the req.body is empty object I used express.json() in my app.js
and i am using formdata method with Postman everything went good when i used normal json but thats wont help me because my file will not upload my middleware
const User = require(`../models/user`);
module.exports = async (req, res, next) => {
console.log(req.body);
const user = await User.findOne({ email: req.body.email });
if (user) {
const error = new Error(`User already exists. Middleware`);
error.statusCode = 500;
return next(error);
}
next();
};
const User = require(`../models/user`);
module.exports = async (req, res, next) => {
console.log(req.body);
const user = await User.findOne({ email: req.body.email });
if (user) {
const error = new Error(`User already exists. Middleware`);
error.statusCode = 500;
return next(error);
}
next();
};
the route
const express = require(`express`);
const multer = require(`multer`);
const notAuth = require(`../middlewares/not-auth`);
const isAuth = require(`../middlewares/is-auth`);
const checkIfUpload = require(`../middlewares/check-if-upload`);
const fileStorage = multer.diskStorage({
destination: (req, file, cb) => {
cb(null, "images/users");
},
filename: (req, file, cb) => {
cb(null, Date.now().toString() + `-` + file.originalname);
},
});
const fileFilter = (req, file, cb) => {
if (
file.mimetype === "image/png" ||
file.mimetype === "image/jpg" ||
file.mimetype === "image/jpeg"
) {
cb(null, true);
} else {
cb(null, false);
}
};
const upload = multer({ storage: fileStorage, fileFilter: fileFilter });
const authController = require(`../controllers/auth`);
const router = express.Router();
router.post(
`/signup`,
checkIfUpload,
notAuth,
upload.single("image"),
authController.signup
);
module.exports = router;