链接:https://www.npmjs.com/package/fastest-validator
我在我的NodeJS应用程序中使用fastest-validation
。我已经取得了巨大的成功。不幸的是,我遇到了一个我似乎无法解决的问题。
如果你看一下String
(位于这里:https://www.npmjs.com/package/fastest-validator#user-content-string)
我试图利用属性numeric
,因为我有一个字符串,这是一个我想验证的数字。我找不到任何例子,所以我只能假设我必须将属性设置为true
。这似乎不起作用,因为我试图通过设置另一个字段来验证这一理论,该字段是一个数字字符串,并将alpha
的属性设置为true。我完全期望我的"标签"通过,而我的"值"字段失败。但都通过了。
你应该如何使用这些属性?
下面是我的代码:buildSchema.catalogPages = {
type: "array", items: {
type: "object", props: {
label: { type: "string", empty: false, numeric: true },
value: { type: "string", empty: false, alpha: true }
}
}
}
const v = new Validator()
const check = v.compile(buildSchema)
check(valuesToCheck)
这是我的数据:
const valuesToCheck = [
{
label: "9"
value: "9"
},
{
label: "12"
value: "12"
},
编辑
我刚刚明白我的问题了。我有一个处理程序函数来检查我的模式和valuesToCheck。我所做的是返回check(valuesToCheck)
,假设它只是返回真或假。但实际上,如果检查失败,它将返回失败内容的数组(这非常棒)。我要接受他。teixeira的答案,因为它帮助我意识到我需要更新我的处理程序来检查它是一个布尔值true还是一个数组(也就是它失败了)。
我认为这不应该与模式本身有关,在下面的例子中:
const Validator = require('fastest-validator');
const schema = {
myItems: {
type: 'array',
items: {
type: 'object',
props: {
label: { type: 'string', empty: false, numeric: true },
value: { type: 'string', empty: false, alpha: true },
},
},
},
};
const valuesToCheck = {
myItems: [
{
label: '9',
value: '9',
},
{
label: '12',
value: '12',
},
],
};
const v = new Validator();
const check = v.compile(schema);
console.log(JSON.stringify(check(valuesToCheck), null, 4));
确实没有通过验证并出现错误:$> node fastestValidatorTest.js
[
{
"type": "stringAlpha",
"message": "The 'myItems[0].value' field must be an alphabetic string.",
"field": "myItems[0].value",
"actual": "9"
},
{
"type": "stringAlpha",
"message": "The 'myItems[1].value' field must be an alphabetic string.",
"field": "myItems[1].value",
"actual": "12"
}
]
所以我得到了你期望的行为:'label'传递,我的'value'字段失败';
所以我的结论是,也许有些东西是不正确的buildSchema.catalogPages
部分,对我来说,它感觉有点可疑,我也得到了你的例子的预期行为,但我已经改变了模式对象更简单。
PS:谢谢你的问题,我不知道图书馆,所以学到了一些新的东西,这很酷