我当前正在使用tv4(json-schema验证器)来验证(客户端)一个带有json-schema的对象,这种方法效果非常好。
但是,当我更改属性的一个值时,我希望此值是唯一的值,应该进行验证。
例如我有一个用户:
var user = { Name: 'Username', Age: 20 };
架构:
{
"title": "UserValidation",
"type": "object",
"properties": {
"Name": {
"minLength": 4
},
"Age": {
"type": "int"
}
}
}
当我只更改名称时,我不想检查,如果属性"年龄"是有效的。
原因:当我有一个大对象(带有子模型等)时,它将验证所有属性。而且我不知道它是否会成为性能问题(有一天......)。
我正在使用AngularJS btw。
致以最诚挚的问候和感谢。
答案 0 :(得分:2)
我认为您必须选择子模式来验证子属性。这应该很容易,使用schema.properties.Name验证user.Name。
仅验证子属性的问题是验证的某些部分不在属性本身上。例如,上面的对象可能有一个必需的数组。
答案 1 :(得分:1)
在遇到性能问题之前,您没有性能问题。 :)
没有技术原因这样的部分更新验证器不应该存在(我知道至少有一个,但它首先并不是非常快)。还有更快的“从头开始”验证器(some with benchmarks),包括一些非常类似的API /错误报告,所以如果将来你开始看到性能问题,那么你可以毫不费力地切换。 / p>
但是,鉴于这种情况发生在客户端(因此您没有更多用户的扩展问题),我不会担心它。