对象对象在快递注册护照中的错误

我有一个用户模型,身份证,密码和电子邮件。 当我尝试注册时,它会在窗体中显示[object Object]错误,并且不会在数据库中发布用户数据。 在控制台中,它显示POST /注册302 -58。 这里是整个passport.js文件:

var LocalStrategy = require('passport-local').Strategy; // load up the user model var configDB = require('./database.js'); var Sequelize = require('sequelize'); var sequelize = new Sequelize(configDB.url); var User = sequelize.import('../app/models/users'); User.sync(); // load the auth variables var configAuth = require('./auth'); // use this one for testing module.exports = function(passport) { ========================================================================= // passport session setup ================================================== // required for persistent login sessions // passport needs ability to serialize and unserialize users out of session // used to serialize the user for the session passport.serializeUser(function(user, done) { done(null, user.id); }); // used to deserialize the user passport.deserializeUser(function(id, done) { User.findById(id).then(function(user){ done(null, user); }).catch(function(e){ done(e, false); }); }); // ========================================================================= // LOCAL LOGIN ============================================================= passport.use('local-login', new LocalStrategy({ // by default, local strategy uses username and password, we will override with email usernameField : 'email', passwordField : 'password', passReqToCallback : true // allows us to pass in the req from our route (lets us check if a user is logged in or not) }, function(req, email, password, done) { User.findOne({ where: { email: email }}) .then(function(user) { if (!user) { done(null, false, req.flash('loginMessage', 'Unknown user')); } else if (!user.validPassword(password)) { done(null, false, req.flash('loginMessage', 'Wrong password')); } else { done(null, user); } }) .catch(function(e) { done(null, false, req.flash('loginMessage',e.name + " " + e.message)); }); })); // ========================================================================= // LOCAL SIGNUP ============================================================ // ========================================================================= passport.use('local-signup', new LocalStrategy({ // by default, local strategy uses username and password, we will override with email usernameField : 'email', passwordField : 'password', passReqToCallback : true // allows us to pass in the req from our route (lets us check if a user is logged in or not) }, function(req, email, password, done) { // Whether we're signing up or connecting an account, we'll need // to know if the email address is in use. User.findOne({ where: { email: email }}) .then(function(existingUser) { // check to see if there's already a user with that email if (existingUser) return done(null, false, req.flash('error', 'That email is already taken.')); // If we're logged in, we're connecting a new local account. if(req.user) { var user = req.user; user.email = email; user.password = User.generateHash(password); user.save().catch(function (err) { throw err; }).then (function() { done(null, user); }); } // We're not logged in, so we're creating a brand new user. else { // create the user var newUser = User.build ({email: email, password: User.generateHash(password)}); newUser.save().then(function() {done (null, newUser);}).catch(function(err) { done(null, false, req.flash('error', err));}); } }) .catch(function (e) { done(null, false, req.flash('loginMessage',e.name + " " + e.message)); }) })); 

在routes.js

 // locally -------------------------------- // LOGIN =============================== // show the login form app.get('/login', function(req, res) { res.render('login.ejs', { message: req.flash('loginMessage') }); }); // process the login form app.post('/login', passport.authenticate('local-login', { successRedirect : '/profile', // redirect to the secure profile section failureRedirect : '/login', // redirect back to the signup page if there is an error failureFlash : true // allow flash messages })); // SIGNUP ================================= // show the signup form app.get('/signup', function(req, res) { res.render('signup.ejs', { message: req.flash('loginMessage') }); }); // process the signup form app.post('/signup', passport.authenticate('local-signup', { successRedirect : '/profile', // redirect to the secure profile section failureRedirect : '/signup', // redirect back to the signup page if there is an error failureFlash : true // allow flash messages })); 

我find了解决scheme! 这比我想象的简单,只是粗心大意。 在用户模型中,我定义了密码字段:

 password: { type: DataTypes.STRING(25), allowNull: true, defaultValue: '' }, 

而且在encryption之后,这个字段长度太小而不能存储这个值。 所以我改了255。