[英]How to validate nested object whose keys should match with outer objects another key whose value is array using Joi?
[英]How to validate that object key's value should present in another object using Joi?
我正在使用Joi进行 object dalidation。
假设我的对象是
global_object = [
{"id": 1, "name": "Alok"},
{"id": 2, "name": "Ajay"},
{"id": 3, "name": "Ankit"},
]
// valid object because id is present in global_object
object1 = {
"id": 2,
"country": "India"
}
// invalid object because id is not present in global_object
object2 = {
"id": 7,
"country": "India"
}
我想向这个object1
和object2
添加验证,即id
的值应该使用joi
出现在global_object
中。
这可以使用Joi.any().valid()
var schema = Joi.object({
id: Joi.any().valid(...global_object.map(e=>e['id'])),
country: Joi.string()
})
console.log(schema.validate(object1)) // valid case
console.log(schema.validate(object2)) // this will show error as its invalid
这里是 output
> console.log(schema.validate(object1))
{ value: { id: 2, country: 'India' } }
undefined
> console.log(schema.validate(object2))
{ value: { id: 7, country: 'India' },
error:
{ ValidationError: "id" must be one of [1, 2, 3]
_original: { id: 7, country: 'India' },
details: [ [Object] ] } }
undefined
>
您可以使用 JavaScript Array.prototype.some()
代码:
const global_object = [ {"id": 1, "name": "Alok"}, {"id": 2, "name": "Ajay"}, {"id": 3, "name": "Ankit"}, ] const object1 = { "id": 2, "country": "India" } const object2 = { "id": 7, "country": "India" } const isValid = obj => global_object.some(go => go.id === obj.id) console.log(isValid(object1)) console.log(isValid(object2))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.