Проверить схему с помощью joi TypeError, если свойство не существует

Я получаю сообщение об ошибке при проверке моей схемы с помощью joi

Итак, я написал это:

const joiSchema = Joi.object().options({ abortEarly: false }).keys({
  stream_name: Joi.string().required(),
  audio_bitrate: Joi.number().integer().min(80).required()
  ...
});

и в моем методе получения

data.forEach((item) => {
  const result = Joi.validate({
    stream_name: item.value.name,
    audio_bitrate: item.value.stats.media_info.streams[0].bitrate,
},
joiSchema,
(err, val) => {
 console.log(err);
});

Но когда потоков не существует, я получаю typeError

audio_bitrate: item.value.stats.media_info.streams[0].bitrate, ^

TypeError: не удается прочитать свойства «потоки» неопределенного

Как я могу справиться с этим? проверка работает без проблем, если битрейт меньше 80, но когда он не существует, приложение попадает в исключение.


person gsiradze    schedule 20.10.2017    source источник


Ответы (1)


Если вы получаете доступ к глубоко вложенным значениям перед проверкой, вы обязаны проверить наличие ошибок, joi здесь даже не вызывается.

Если вы хотите, чтобы joi сделала это, вы должны дать ему полную схему item.

person Gabriel Bleu    schedule 20.10.2017