我尝试使用validate.js验证来自前端的输入,然后在带有节点的数据库中输入它,但我收到的错误是我无法弄清楚的。我已经浏览了文档并相信我正确设置了约束。确切的错误是:
message:"Unknown validator pattern"
我的验证器设置如下:
let alphanumeric = /^[a-zA-Z0-9]*$/;
let constraints = {
clientUsername:{
presence: true,
length: {min:8, max:15},
pattern:alphanumeric,
message: 'make sure client username is between 8-15 characters, is only numbers and letters'
},
tileCategory:{
presence:true,
length:{min:1, max:1},
numericality:{
onlyInteger:true,
lessThanOrEqualTo:tileCategoryNumber,
},
message:'enter a number, 1 char in length, less than or equal to 3' //the current number of tiles
}
};
validate({clientUsername: input.clientUsername},constraints);
起初我认为这是正则表达式模式,但尝试评论出来然后它说
message:"Unknown validator messsage"
所以我猜测我的验证器一般有问题。
在最顶端我当然包括const validate = require('validate.js');
答案 0 :(得分:0)
我可以看到(2)我遇到的问题。首先,您使用基于JS的正则表达式与前面和后面的/。尝试删除这些。
除此之外,我建议您尝试删除字母数字参数&直接输入正则表达式...它也可能是一个类型问题。
pattern:"^[a-zA-Z0-9]*$",
希望这有帮助! :)
答案 1 :(得分:0)
类似的事情让我很生气,再次看看the documentation。
pattern
是format
的子验证器,应类似于:
{
format: {
pattern: "[A-Za-z0-9]+"
}
}
您正在尝试在“顶层”使用pattern
。我在文档中看不到任何暗示alphanumeric
之类的助手模式的地方。 (我认为该工具使用的语言是说“ pattern
验证程序的一种选择”,但我不确定。)
您指出的错误消息还暗示拼写错误:它告诉您无法识别format
,该字母中有3个字母“ s”,但应为2。