javascript - 如何使用 Joi 验证对象键的值是否应该出现在另一个对象中?
问题描述
我正在使用Joi进行对象标记。
假设我的对象是
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
应该存在于global_object
using 中joi
。
解决方案
This can be possible using 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
Here are 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
>
推荐阅读
- php - 如何使用 html2pdf 保存文件特定的文件夹
- php - 控制器功能的 Laravel 应该与基本控制器兼容
- barcode - 有时条码未加载,采用 IDAutomationHC39M 样式
- mysql - 如何在 SQL 中使用 ON DUPLICATE KEY 更新
- javascript - Post API 无法在位置 0 处给出错误 Unexpected token < in JSON
- node.js - 为什么要在我的代码中表示“无法在将标头发送到客户端后设置标头”?
- excel-formula - 从不同的工作表中间接拖动公式
- go - 在 Go 中,如何检查接口是否实现了结构的所有导出方法?
- android - Android Emulator 自行关闭
- json - 使用 JSON.stringify() 的麻烦