Как проверить, что значение ключа объекта должно присутствовать в другом объекте с помощью Joi? - PullRequest
0 голосов
/ 24 октября 2019

Я использую 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 с использованием joi.

1 Ответ

1 голос
/ 25 октября 2019

Это может быть возможно при использовании 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

Здесь выводятся

> 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
>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...