我在使用joi
验证我的架构时遇到错误所以我写了这个:
const joiSchema = Joi.object().options({ abortEarly: false }).keys({
stream_name: Joi.string().required(),
audio_bitrate: Joi.number().integer().min(80).required()
...
});
和我的get方法
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:无法读取未定义
的属性“stream”
我该如何处理?如果比特率小于80,则验证工作没有任何问题但是当它不存在时,应用程序进入例外..
答案 0 :(得分:0)
如果您在验证之前访问深层嵌套值,那么检查错误是您的责任,这里甚至不会调用joi。
如果您希望joi执行此操作,则必须为其提供完整的item
架构。