javascript - 在 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”
解决方案
推荐阅读
- nswag - nswag studio 将模型类生成到单独的文件中
- php - 如何在 symfony 3.4 中返回 json 响应
- excel - VBA自动填充两列的最后一行
- java - 我是一名学生,在代码 hs 中的煎蛋挑战中移动我的 cicles 时遇到问题
- ios - 更新到 xcode 11.0 后无法构建反应原生项目
- javascript - 针对特定的类属性而不重复
- reactjs - 如何编写一个好的重新渲染父调用?
- java - 如何在 Hibernate 中删除多对多关系中的实体
- machine-learning - 如何将字典提供给 Julia 中的 Flux 模型
- android - 库内片段的脱糖失败