javascript - 根据另一键的输入,根据需要进行一个输入

标签 javascript hapi.js joi

我正在使用JOI用于模式验证。在以下架构中,当 typejobType.MBR 时,我希望 input_file 具有所需的类型,否则 file_name必须保持类型必需

const jobObjectSchema = {
  type: Joi.string().valid(jobType.MBR, jobType.MP4).required(),
  file_name: Joi.string().required(),
  input_file: Joi.string()
};

我该怎么做?

最佳答案

使用Joi any().when

const jobObjectSchema = {
  type: Joi.string().valid(jobType.MBR, jobType.MP4).required(),
  file_name: Joi.any().when('type', {
    is: jobType.MBR, 
    then: Joi.string().optional(),
    otherwise: Joi.string().required()
  }),
  input_file: Joi.any().when('type', {
    is: jobType.MBR, 
    then: Joi.string().required(),
    otherwise: Joi.string().optional()
  })
};

关于javascript - 根据另一键的输入,根据需要进行一个输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48560274/

相关文章:

javascript - 获取字符串中指定文本之前出现的部分文本

JavaScript 的类 : toString() method

javascript - Hapijs 在身份验证之前验证参数

javascript - 有没有像 Joi 这样的 JS 智能 json 模式验证器,但是有动态自定义错误?

javascript - 使用 joi 验证一个数组的长度与另一个数组的长度

javascript - 使用 grunt 观察并重新编译单个模板

javascript - jQuery 点击只发生一次

node.js - 在 Node JS (Hapijs) 中如何全局访问 Server 变量

node.js - 在 REST API 中处理错误情况的有效方法

json - 如何创建 joi 模式来验证 json 文件格式?