当属性不存在时使用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
模式。