【问题标题】:How to validate that json object fields are equal with nodeJS tv4 validation lib?如何验证 json 对象字段是否与 nodeJS tv4 验证库相等?
【发布时间】:2015-02-20 11:41:47
【问题描述】:

我正在编写用于验证用户创建方法的 json 请求的代码。 Validator 必须检查 email 字段是否等于字段 confirmEmail。请求示例:

{
     "firstName":"Homer",
     "lastName":"Simpson", 
     "email":"test1234@fox.com",
     "confirmEmail":"test1234@fox.com",
     ...
}

我正在使用 tv4 架构验证库。目标是编写一个模式来验证 email 和 confirmEmail 字段之间的相等性。

当然,我可以直接检查请求中的那些字段,但我会使用它作为最后的手段,以防模式验证不起作用。

【问题讨论】:

  • @luis espinal,jsonschema 是一个具体的标准。这个问题是指 jsonschema 标准,所以应该这样标记。
  • 正确,这是一个标准。但问题在于是否有简洁的标签。因此,如果我们保留 'json' 和 'jsonschema',那么我们应该添加 'schema' 以使其统一(如果我们在 'jsonschema 旁边有 'json',则 NOT 有 'schema' 是没有意义的'。)。如果这样做,我们会得到 'json' 和 'schema',这会使 'jsonschema' 变得多余。就像人们搜索“xml”和“schema”一样,大多数人搜索“json”+“schema”而不是“jsonschema”(除非他们正在搜索特定的软件包或域名。)
  • 是的,我会用模式替换 jsonschema,只有 json 和 jsonschema。可能所有与 json-schema 相关的帖子除了这个之外都带有 json 和 jsonschema (stackoverflow.com/questions/tagged/jsonschema) 的标签。它不是关于简洁的标签,而是描述性和定义性的标签。搜索与 json+schema、json-schema、jsonschema 和 [jsonschema] 一起很好地解决所有与 json-schema 相关的问题。

标签: json node.js validation jsonschema tv4


【解决方案1】:

您无法使用 json-schema 测试属性之间的值是否相等。 Json-schema 用于验证 json 结构。

您可以通过正则表达式测试这些字段是否存在以及它们是否是正确的电子邮件。您甚至可以测试它们是否属于枚举中的一组预定义值。但没有别的了。

【讨论】:

    【解决方案2】:

    在我的项目中,我使用的是jpv 模块

    const jpv = require('jpv');
    
    const pattern = {
         "firstName" : /.+/,
         "email" : "[email]",
         ...
    };
    
    const isVaild =  jpv.validate(obj, pattern)
    

    【讨论】:

      【解决方案3】:
      jpv.validate(data, messageSchema))
      

      【讨论】:

      • 请添加一些描述。
      猜你喜欢
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 2018-10-03
      • 2021-02-13
      • 2011-07-03
      • 1970-01-01
      • 2019-04-30
      • 2018-08-21
      相关资源
      最近更新 更多