Expressjs - 无法在会话变量中设置未定义的属性“userId”

时间:2017-12-11 20:57:38

标签: mysql node.js mean-stack

我正在使用mysql数据库在express.js中实现登录和注册功能。我的注册逻辑工作正常。但登录无效。相反,它会抛出错误,

  

TypeError:无法设置未定义的属性“userId”   和   扔错了; //重新抛出非MySQL错误   我的routes / user.login代码如下。

values = self.selector.extract()

和我的login.ejs文件如下。

exports.login = function(req, res){
var message = '';
var sess = req.session;

if(req.method == "POST"){
   var post  = req.body;
   var name= post.user_name;
   var pass= post.password;

  var sql="SELECT id, first_name, last_name, user_name FROM `users` WHERE `user_name`='"+name+"' and password = '"+pass+"'";
  db.query(sql, function(err, results){
     if(results.length){
        req.session.userId = results[0].id;
        req.session.user = results[0];
        console.log(results[0].id);
        res.redirect('/home/dashboard');
     }
     else{
        message = 'Wrong Credentials.';
        res.render('index.ejs',{message: message});
     }

  });
    }else {
        res.render('index.ejs',{message: message});
 }
};

1 个答案:

答案 0 :(得分:1)

似乎您的应用程序中没有安装会话模块。使用以下express-session命令

安装npm
npm install express-session

然后require并在app.js文件中配置

var expressSession = require('express-session');
app.use(expressSession({secret: 'your secret', saveUninitialized: true, resave: false}));

之后,它应该可以正常工作。