1

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

但是,当我尝试使用节点验证器时,它不断收到错误,因为 TypeError: Object # has no method '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') }
         );
}

如何纠正这个错误?

4

1 回答 1

1

您正在使用node-validator. 你应该express-validator使用onValidationError

节点验证器页面您可以看到它:

如果您使用的是 express.js 框架,您可以使用 express-validator 中间件来无缝集成 node-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);app.use您可以在https://github.com/justin-john/node-user-management/blob/master/app.js#L17-L18查看顺序。

于 2013-02-25T06:42:30.953 回答