我在使用 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,验证工作没有任何问题,但如果比特率不存在,应用程序就会出现异常。
最佳答案
如果您在验证之前访问深层嵌套值,则您有责任检查错误,这里甚至不会调用 joi。
如果您希望 joi 执行此操作,则必须为其提供完整的 item
架构。
关于node.js - 当属性不存在时使用 joi TypeError 验证模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46849868/