Angularjs 使用json模式验证对象的一个属性
我目前正在使用tv4(json模式验证器)来验证(客户端)具有json模式的对象,这非常有效 但是当我改变一个属性的一个值时,我希望这个值是唯一一个应该被验证的值 例如,我有一个用户:Angularjs 使用json模式验证对象的一个属性,angularjs,validation,attributes,jsonschema,client-side-validation,Angularjs,Validation,Attributes,Jsonschema,Client Side Validation,我目前正在使用tv4(json模式验证器)来验证(客户端)具有json模式的对象,这非常有效 但是当我改变一个属性的一个值时,我希望这个值是唯一一个应该被验证的值 例如,我有一个用户: var user = { Name: 'Username', Age: 20 }; 以及模式: { "title": "UserValidation", "type": "object", "properties": { "Name": { "mi
var user = { Name: 'Username', Age: 20 };
以及模式:
{
"title": "UserValidation",
"type": "object",
"properties": {
"Name": {
"minLength": 4
},
"Age": {
"type": "int"
}
}
}
当我只更改名称时,我不想检查属性“Age”是否有效
原因:当我有一个大对象(带有子模型等)时,它将验证所有属性。我不知道这是否会是一个性能问题(有一天…)
- 这是模式验证的可能情况吗李>
- 还是有更好的 验证对象的方法
致以最诚挚的问候和感谢。在出现性能问题之前,您不会遇到性能问题。:) 这样的部分更新验证器不应该存在并没有技术上的原因(我知道至少有一个,但它在一开始并不是很快)。还有更快的“从头开始”验证器(),包括一些具有非常相似的API/错误报告的验证器,因此如果将来您确实开始看到性能问题,那么您可以在不太麻烦的情况下切换
但是,考虑到这种情况是在客户端发生的(这样您就不会有更多用户的缩放问题),我还不担心它。我认为您必须选择子模式来验证子属性。这应该很容易做到,用schema.properties.Name验证user.Name
仅验证子属性的一个问题是,验证的某些部分不在属性本身上。例如,上面的对象上可能有一个必需的数组。谢谢,帮了我很多忙!:)虽然这可能适用于某些模式,但一般来说这是不可能的。类似于
oneOf
或dependencies
的子句意味着数据某个部分的更改可能会影响完全不同的区域(包括删除/添加模式)。