2017-10-20 164 views
1

在驗證使用我的模式我得到一個錯誤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: Cannot read property 'streams' of undefined

我該如何處理?沒有任何問題的驗證工作,如果比特率小於80,但是當它不存在應用程序進入異常..

回答

0

如果您在驗證之前訪問深嵌套的值,它是你的責任來檢查錯誤,穰不甚至在這裏叫。

如果你想joi來做到這一點,你必須給它完整的item模式。