问题描述
我有一个端点,我可以在其中发布一些数据来创建用户。我正在使用 Joi 验证请求正文。但是当我使用 Postman 发帖时,验证失败。
这里,类似于验证功能,
const checkData = (data) => {
const schema = Joi.object({
image: Joi.string(),greeting: Joi.string().valid("Hello World!","Welcome").required(),email: Joi.string().email().required(),});
return schema.validateAsync(data);
};
这是multer设置,
const storage = multer.diskStorage({
destination: (req,file,callback) => {
callback(null,"./upload/");
},filename: (req,Date.Now().toString() + "_" + file.originalname);
},});
const fileFilter = (req,callback) => {
if (file.mimetype === "image/jpeg" || file.mimetype === "image/png") {
callback(null,true);
} else {
callback(null,false);
}
};
const upload = multer({ storage,fileFilter });
而且,这是我的路线,
router.post("/create/:whatever",upload.single("image"),async (req,res) => {
try {
await checkData(req.body);
res.send(req.params.whatever);
} catch (err) {
res.send({ message: err.details[0].message });
}
});
我得到的错误响应是,
{
"message": "\"email\" must be a valid email"
}
如果您想知道我发送的电子邮件是否正确,我发送的是实际有效的电子邮件。我肯定在这里遗漏了一些东西,请告诉我。
解决方法
实际上一切都很好,事实证明,在 Postman 中的表单数据中有一个我没有注意到的额外空间。在开始时删除额外的空间解决了验证错误。