const Joi = require('joi');
app.post('/api/courses', (req, res) => {
const schema = {
name: Joi.string().min(3).required()
};
const result = Joi.validate(req.body, schema);
if (result.error) {
res.status(400).send(result.error.details[0].message);
return;
}
const course = {
id: courses.length + 1,
name: req.body.name
};
courses.push(course);
res.send(course);
});
当我在邮递员中张贴一个空白对象时,则需要400个“名称”,但是如果我张贴“名称”:“ 1”,则输出相同,而不是最小长度应为3个字符。
答案 0 :(得分:0)
检查模型,并确保类型为字符串,例如:type:String。 这应该可以解决问题。 Joi的min()函数似乎只对字符串起作用。
答案 1 :(得分:-1)
我无法复制该问题。如果您提供更多详细信息和失败的示例,我们也许可以提供帮助。
Joi.string().min(3).required().validate('a'); // ValidationError: "value" length must be at least 3 characters long
const objSchema = {name: Joi.string().min(3).required()};
Joi.validate({}, objSchema); // ValidationError: child "name" fails because ["name" is required]
Joi.validate({name: 'a'}, objSchema); // ValidationError: child "name" fails because ["name" length must be at least 3 characters long]
Joi.version; // '14.3.1'