【问题标题】:How to correct error as no method 'onValidationError' in validator of node.js?如何在node.js的验证器中纠正错误,因为没有方法'onValidationError'?
【发布时间】:2013-03-04 14:42:56
【问题描述】:

我有注册表并将值发布到注册函数,它将使用node-validator 验证表单值。

但是,当我尝试使用 node-validator 时,它不断出现错误 TypeError: Object # 没有方法 'onValidationError'。验证器已安装在我的应用程序中。

app.js

app.post('/register', test.register);

test.js

var check = require('validator').check,
sanitize = require('validator').sanitize;


exports.register = function(req, res){

    var errors = [];
    req.onValidationError(function(msg) {
        //res.render('signup', { error: msg });
        errors.push(msg);
    });
    req.check(req.body.email, 'Please enter a valid email').len(6,64).isEmail();
    req.check(req.body.username, "Username can't be empty!").isNull();

    if (errors.length) 
         return res.render(
            'register', { regErr: errors.join('\n') }
         );
}

如何纠正这个错误?

【问题讨论】:

    标签: javascript node.js validation express


    【解决方案1】:

    您正在使用 node-validator 。您应该将express-validator 用于onValidationError

    node-validator页面你可以看到:

    如果您使用的是 express.js 框架,您可以使用 express-validator 中间件无缝集成节点验证器。

    Example http://localhost:8080/?zip=12345&foo=1&textarea=large_string
    
    get('/', function (req, res) {
        req.onValidationError(function (msg) {
            //Redirect the user with error 'msg'
        });
    

    补充说明: app.use 的顺序也很重要。尝试将app.use(expressValidator); 向上移动app.use(app.router);。您可以在https://github.com/justin-john/node-user-management/blob/master/app.js#L17-L18中查看app.use的顺序。

    【讨论】:

    • 所以不需要安装node-validator。我是否需要从我的应用中卸载 node-validator?
    • 现在它在req.assert('email', 'required').notEmpty(); 上给出TypeError: Object #<IncomingMessage> has no method 'assert' 的错误。
    • app.use的顺序也很重要 尝试移动app.use(expressValidator);向上或向下,你会得到它的工作。见这里:stackoverflow.com/questions/12483554/…
    猜你喜欢
    • 2015-08-22
    • 2016-02-17
    • 1970-01-01
    • 1970-01-01
    • 2022-10-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多