我正在尝试使用express nodejs发布到mongodb,这是添加路由的代码:
router.post('/add', (req, res) => {
const validating = userValidating(req.body);
if (validating.error) {
res.status(400).send(validating.error.details);
} else {
var path = "images/"+req.file.image;
res.send(path);
var image = req.files.image;
fileName = uuidv1();
const user = new User({
_id: new mongoose.Types.ObjectId(),
image: req.file.image,
title: req.body.title
});
const v = user.validateSync();
if (v)
res.status(400).send('somthing wrong');
user.save()
.then(result => {
res.send('You have added a new user');
image.mv(`./public/images/${fileName}.png`, function(err) {
if (err)
return res.status(500).send(err);
res.send('File uploaded!');
});
console.log(result);
})
.catch(err => {
res.status(401).send(err);
console.log(err);
});
}
});
这是我上面使用的验证功能:
function userValidating(user) {
const userSchema = {
'image': Joi.string().required(),
'title': Joi.string().required()
}
return Joi.validate(user, userSchema);
}
当我在邮递员中尝试使用如下形式的数据时:
您可以看到,即使我将图像更改为req.body.image而不是req.file.image,我仍然需要此图像错误
我也尝试在邮递员中使用Body raw而不是form-data并这样写json:
{
"image": "uuu",
"title": "uuuu"
}
效果很好
代码有什么问题?