当属性不存在时,使用joi TypeError验证模式

时间:2017-10-20 13:13:27

标签: node.js typeerror joi

我在使用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,则验证工作没有任何问题但是当它不存在时,应用程序进入例外..

1 个答案:

答案 0 :(得分:0)

如果您在验证之前访问深层嵌套值,那么检查错误是您的责任,这里甚至不会调用joi。

如果您希望joi执行此操作,则必须为其提供完整的item架构。