如何纠正错误作为没有方法'onValidationError'validation的node.js?
我有registry单,并将值发布到注册函数,在那里它将validation与节点validation器的表单值。
但是,当我尝试使用节点validation器,它不断得到错误TypeError:Object#没有方法'onValidationError' 。 validation器已经安装在我的应用程序。
在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') } ); }
如何纠正这个错误?
您正在使用node-validator
。 您应该为onValidationError
使用express-validator
从节点validation器页面可以看到:
如果您使用express.js框架,则可以使用express-validator中间件来无缝地集成节点validation器。
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
的顺序。