使用json模式验证对象的一个​​属性

时间:2014-10-06 12:33:17

标签: angularjs validation attributes jsonschema client-side-validation

我当前正在使用tv4(json-schema验证器)来验证(客户端)一个带有json-schema的对象,这种方法效果非常好。

但是,当我更改属性的一个值时,我希望此值是唯一的值,应该进行验证。

例如我有一个用户:

var user = { Name: 'Username', Age: 20 };

架构:

{
    "title": "UserValidation",
    "type": "object",
    "properties": {
        "Name": {
            "minLength": 4
        },
        "Age": {
            "type": "int"
        }
    }
}

当我只更改名称时,我不想检查,如果属性"年龄"是有效的。

原因:当我有一个大对象(带有子模型等)时,它将验证所有属性。而且我不知道它是否会成为性能问题(有一天......)。

  • 这是架构验证的可能情况吗?
  • 还是更好 验证对象的方法?

我正在使用AngularJS btw。

致以最诚挚的问候和感谢。

2 个答案:

答案 0 :(得分:2)

我认为您必须选择子模式来验证子属性。这应该很容易,使用schema.properties.Name验证user.Name。

仅验证子属性的问题是验证的某些部分不在属性本身上。例如,上面的对象可能有一个必需的数组。

答案 1 :(得分:1)

在遇到性能问题之前,您没有性能问题。 :)

没有技术原因这样的部分更新验证器不应该存在(我知道至少有一个,但它首先并不是非常快)。还有更快的“从头开始”验证器(some with benchmarks),包括一些非常类似的API /错误报告,所以如果将来你开始看到性能问题,那么你可以毫不费力地切换。 / p>

但是,鉴于这种情况发生在客户端(因此您没有更多用户的扩展问题),我不会担心它。