node.js - 当属性不存在时使用 joi TypeError 验证模式

标签 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: Cannot read property 'streams' of undefined

我该如何处理这个问题?如果比特率小于 80,验证工作没有任何问题,但如果比特率不存在,应用程序就会出现异常。

最佳答案

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

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

关于node.js - 当属性不存在时使用 joi TypeError 验证模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46849868/

相关文章:

java - Nashorn 无法执行 MATH 函数

arrays - node.js 在 Intervall 中迭代数组一定次数

python - 这个错误: "TypeError: Parameters to generic types must be types"?是什么意思

javascript - 多字节字符以单字节编码显示

database - Sentiment140 预处理

javascript - 使用 Joi 和 nodeJS 验证嵌套对象中的唯一键对

node.js - 如何在 Hapi Joi 中指定 HTTP 错误 422 而不是 400

javascript - 当两个值中的任何一个存在或缺失时进行 Joi 验证

node.js - 使用webpack根据node环境使用特定文件

javascript - 使用 Sails.js 进行慢速 MongoDB 查询