node.js - 父数组不允许 JOI npm 库
问题描述
嗨,我使用 Joi 在一个简单的 API 上验证 JSON 对象,我的验证模式是:
let holidays = Joi.object().keys({
day: Joi.number().required(),
month: Joi.number().required(),
description: Joi.string().required()
})
const countryValidateSchema = Joi.object().keys({
name: Joi.string().required(),
holidays: Joi.array().items(holidays),
states: Joi.array().required().items(Joi.string())
});
当添加一个新国家时,我会这样验证它:
function newCountry(req, res) {
//TODO validate
var newCountry = new Country(req.body);
const result = Joi.validate(newCountry, validate.countryValidateSchema);
const { value, error } = result;
const valid = error == null;
if (!valid) {
res.status(422).json({
message: result,
data: newCountry
})
} else {
//Store on DB
newCountry.save((err,country) =>{
if(err){
res.send(err);
}else{
res.status(201).json({message: "Country successfully added!", country})
}
});
}
}
当我尝试使用此 JSON 添加新国家/地区时,会引发错误: ParentArray is not allowed
{
"name": "TestCountry",
"holidays": [
{
"day": 1,
"month": 2,
"description": "test"
}
],
"states": [
"test1",
"test2",
"test3",
"test34"
]
}
有任何想法吗?
解决方案
解决了,我正在验证 Country 对象而不是 json 主体。所以解决方法是改变
var newCountry = new Country(req.body);
至
var newCountry = req.body;
推荐阅读
- vb.net - 从 VB.NET 中的外部库中捕获异常
- angularjs - AngularJS - ng-maxlength
- javascript - Javascript 更改源仅执行第一行
- jquery - 通过 JQuery 打开 Json 对象 - HTML。ASP.NET 核心
- json - 将信息添加到 Angular 中的列表
- python - .data 在 pytorch 中仍然有用吗?
- python - 气流 dagbag_import_timeout - 使用 subdag 吗?
- list - 是否可以使用 AMP 侧边栏创建多级导航?
- scala - 使用 scala /spark 创建蜂巢视图
- r - RStudio 要求证书