当属性不存在时使用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
模式。
- MQTT.js订阅接收来自代理的相同消息的倍数
- 通过Node.js驱动运行任意的MongoDB脚本
- 如何监控类似于Chrome / Firefox开发人员工具的node.js上的networking?
- Node.js Express unhandledRejection removeListener
- 对于释放的对象不正确的校验和
- 使用Cloudant Lite服务在Bluemix上的Node.js Web应用程序中收到500个查询错误
- 如何将json块作为文件发送给用户
- 使用Node JS将Uint8Array转换为Stream
- 试图使用nodemailer使用Gmail发送电子邮件,并收到错误:“无法为用户创build新的访问令牌”