为什么Route.post()需要一个回调函数,却得到了一个[object object]



我正在尝试将我的文件保存在特定的路径中,并保存在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);
};

相关内容

最新更新