Допустим, у меня есть user
объект с id
номером и roles
массивом:
const user = {
id: 1,
roles: [ 'admin' ]
};
И проверка этого объекта должна пройти, если:
id
соответствует некоторому внешнему значению - ИЛИ
roles
включает admin
строку
Я пробовал этот подход, но он не работает должным образом:
const schema = Joi.object({
id: Joi.number().valid(Joi.ref('$userId')), // shouldn't pass as $userId === 2
roles: Joi.array().has(Joi.string().valid('admin')) // should pass as user has 'admin' role
}).or('id');
schema.validate(user, {
context: {
userId: 2
}
}); // should pass as `user` includes `admin` in `roles` (but `userId` not equals `user.id`)