当测试单个值时,Validate.js返回undefined

validate.js returns undefined when testing for single value

本文关键字:js 返回 undefined Validate 测试 单个值      更新时间:2023-09-26

我试图通过使用validate.js库验证单个值,但我从validate.single()函数获得udefined结果。

var test1 = "test12345";
var test2 = "1234";
var test3 = "";
var constraints1 = {
  length: {
    is: 4
  }
}
var constraints2 = {
  length: {
    minimum: 4
  }
}
var constraints3 = {
  length: {
    maximum: 4
  }
}
console.log('Testing for exact length');
console.log(validate.single(test1, constraints1));
console.log(validate.single(test2, constraints1));
console.log(validate.single(test3, constraints1));
console.log('Testing for min length');
console.log(validate.single(test1, constraints2));
console.log(validate.single(test2, constraints2));
console.log(validate.single(test3, constraints2));
console.log('Testing for max length');
console.log(validate.single(test1, constraints3));
console.log(validate.single(test2, constraints3));
console.log(validate.single(test3, constraints3));

上面例子的结果:

[Log] Testing for exact length
[Log] ["is the wrong length (should be 4 characters)"]
[Log] undefined
[Log] undefined
[Log] Testing for min length
[Log] undefined
[Log] undefined
[Log] undefined
[Log] Testing for max length
[Log] ["is too long (maximum is 4 characters)"]
[Log] undefined
[Log] undefined

为什么定义?

JSFiddle: https://jsfiddle.net/3s8ckdkc/13/

请查看您正在使用的库的主页。

在示例中有一个pass case,表示返回undefined

简而言之,标准库只在违反约束时返回一个值。

否则返回undefined

标准库将空、null或undefined视为有效值。

From the page:

重要!有一件事有点不正统,那就是大多数验证器会考虑空值(null, undefined,只有空格的字符串等)有效值。因此,例如,添加至少6个字符的约束就像说,如果给定属性,它必须至少有6个字符。这与Ruby on Rails示例不同,在Ruby on Rails示例中,验证器具有allow_nil选项。我发现对可选属性进行约束是很常见的。

这意味着test3,你把一个空字符串总是有效的,因为它是一个空字符串,不管你有约束