validate.js返回错误"未知验证器模式"

时间:2018-05-30 20:04:52

标签: node.js validation validate.js

我尝试使用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');

2 个答案:

答案 0 :(得分:0)

我可以看到(2)我遇到的问题。首先,您使用基于JS的正则表达式与前面和后面的/。尝试删除这些。

除此之外,我建议您尝试删除字母数字参数&直接输入正则表达式...它也可能是一个类型问题。

  pattern:"^[a-zA-Z0-9]*$",

希望这有帮助! :)

答案 1 :(得分:0)

类似的事情让我很生气,再次看看the documentation

patternformat的子验证器,应类似于:

{
    format: {
        pattern: "[A-Za-z0-9]+"
    }
}

您正在尝试在“顶层”使用pattern。我在文档中看不到任何暗示alphanumeric之类的助手模式的地方。 (我认为该工具使用的语言是说“ pattern验证程序的一种选择”,但我不确定。)

您指出的错误消息还暗示拼写错误:它告诉您无法识别format,该字母中有3个字母“ s”,但应为2。