当属性不存在时使用joi TypeErrorvalidation模式

我在使用joivalidation我的模式时遇到错误

所以我写了这个:

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); }); 

但是,当stream不存在,我得到一个typeError

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

TypeError:无法读取未定义的属性“stream”

我该如何处理? 如果比特率小于80,validation工作没有任何问题,但是当它不存在时,应用程序进入exception。

如果您在validation之前访问深度嵌套的值,则检查错误是您的责任,joi甚至不会在此处调用。

如果你想joi做到这一点,你必须给它完整的item模式。