首页 > 解决方案 > 在 javascript 验证方案中创建特定的错误消息

问题描述

我正在寻找一种优雅地验证 javascript 对象上的属性的方法,并遇到了 Patrick Roberts 提出的这个解决方案:

Javascript - 检查对象的优雅方法是否具有必需的属性

const schema = {
  name: value => /^([A-Z][a-z\-]* )+[A-Z][a-z\-]*( \w+\.?)?$/.test(value),
  age: value => parseInt(value) === Number(value) && value >= 18,
  phone: value => /^(\+?\d{1,2}-)?\d{3}-\d{3}-\d{4}$/.test(value)
};

let info = {
  name: 'John Doe',
  age: '',
  phone: '123-456-7890'
};

const validate = (object, schema) => Object
  .keys(schema)
  .filter(key => !schema[key](object[key]))
  .map(key => new Error(`${key} is invalid.`));

const errors = validate(info, schema);

if (errors.length > 0) {
  for (const { message } of errors) {
    console.log(message);
  }
} else {
  console.log('info is valid');
}

此解决方案只能返回一般错误消息return new Error(key + " is invalid")

如何修改此解决方案以提供更具体的错误消息?

例如,如果 info 对象的年龄设置为 17:

let info = {
  name: 'John Doe',
  age: '17',
  phone: '123-456-7890'
};

那么错误消息将是“Age must be above 18”,如果设置为 100,则错误消息将是“Age must be below 100”

标签: javascript

解决方案


推荐阅读