我正在尝试将我的文件保存在特定的路径中,并保存在mongodb中,这里我在route.js
中使用中间件uploadImg
,但获取和Error: Route.post() requires a callback function but got a [object Object]
这里发生了什么事,请帮我哪里错了。提前感谢!!
config/imageUpload.js:-
const multer = require("multer"),
storage = multer.diskStorage({
destination: function (req, file, cb) {
cb(null, 'uploads')
},
filename: function (req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
})
const uploadImg = multer({storage: storage}).single('image');
module.exports = {
uploadImg: uploadImg,
}
return uploadImg;
controllers.js:
exports.addRoleFields = async (req, res) => {
const rolesExist = Role.find({ roleType : req.body.roleType })
if (rolesExist.length > 0){
res.status(201).send({ message: "Role already exist", statusCode: "201" });
}
else {
const rolesList = new Role ({
roleType : req.body.roleType,
roleImg : req.file.path,
});
rolesList
.save(rolesList)
.then(data => {
res.status(200).send({ data, statusCode: "200" });
})
.catch(err => {
res.status(500).send({
message: err.message || "Some error occurred while creating.",
statusCode: "500"
});
})
}
}
routes.js:
module.exports = app => {
const roles = require("../controllers/roles.js");
const uploadImg = require("../config/imageUpload");
var router = require("express").Router();
router.post("/addRole",uploadImg ,roles.addRoleFields);
app.use('/api/roles', router);
};
在config/imageUpload.js中,您正在导出一个包含您创建的中间件的对象。您可以:
- 在imageUpload.js中直接导出中间件(这更容易(
const multer = require("multer"),
storage = multer.diskStorage({
destination: function(req, file, cb) {
cb(null, 'uploads')
},
filename: function(req, file, cb) {
cb(null, file.fieldname + '-' + Date.now())
}
})
const uploadImg = multer({
storage: storage
}).single('image');
module.exports = uploadImg
- 或者,通过销毁routes.js中的中间件进行导入
module.exports = app => {
const roles = require("../controllers/roles.js");
const { uploadImg } = require("../config/imageUpload");
var router = require("express").Router();
router.post("/addRole", uploadImg, roles.addRoleFields);
app.use('/api/roles', router);
};