我应该如何validation错误与续集和护照login

我已经设置在用户模型中validation。 我的路线代码是这样的,我想要validation。

var express = require('express'); var loginRouter = express.Router(); var passport = require('passport'); var User = require('../app/models/model')().User; module.exports = function() { var loginController = require('../controller/loginController')(); loginRouter.get('/login',loginController.getLogin); loginRouter.post('/login', function (req, res, next) { User.validate().success(function () { next(); // only call next if validation passes }).error(function (error) { console.log(error); res.redirect('/auth/login'); // or res.send({error: true}) or res.redner( ... ) }) }, passport.authenticate('local-login',{ successRedirect: '/dashboard', failureRedirect: '/auth/login', failureFlash : true } )); return loginRouter; 

};

user.js的

 var Sequelize = require('sequelize'); var attributes = { username: { type: Sequelize.STRING, field: 'username', validate: { notNull: true, } }, password: { type: Sequelize.STRING, field: 'password', validate: { notNull: true, } } } var options = { freezeTableName: true, timestamps: false } module.exports.attributes = attributes; module.exports.options = options; 

model.js

 var Sequelize = require('sequelize') config = require('../../config/config').database; module.exports = function(){ var sequelize = new Sequelize(config.database,config.username,config.password,config.options); var UserMeta = require('./User'); var User = sequelize.define('users',UserMeta.attributes,UserMeta.options); return { User: User } }; 

所以我不知道我在这里做错了什么,或者我忘记了哪些事情。 那么有什么想法呢?

这几乎是好的,你应该知道的唯一的事情就是当你调用next() ,express会将请求传递给下一个处理函数,这是passportjsauthentication函数。

你可以按照你的意愿要求和res 。 如果请求未通过validation条件,则可以发送错误或呈现另一个页面,如正常响应。 但在这些情况下不要调用next()

根据您的实现,您的代码可能如下所示:

 loginRouter.post('/login', function (req, res, next) { //here to get validation error User.validate().success(function () { next(); // only call next if validation passes }).error(function () { res.redirect('/auth/login'); // or res.send({error: true}) or res.redner( ... ) }) }, passport.authenticate('local-login',{ successRedirect: '/dashboard', failureRedirect: '/auth/login', failureFlash : true } ));