快速会议无法设置未定义的属性“ID”

var redis = require('redis'); var router = express.Router(); var mysql = require('mysql'); var cookieParser = require('cookie-parser'); var bodyParser = require('body-parser'); var client = redis.createClient(); var session = require('express-session'), RedisStore = require('connect-redis')(session); var app = express(); app.use(cookieParser); app.use(session({ store : new RedisStore({ host:'localhost', port:7351, maxAge: 300000, client:client, ttl:260 } ), secret:'dafdsa', resave:false, saveUninitialized:true, })); 

这是我的设置,这是我的代码

 router.post('/', function(req, res, next) { var id = req.body.userid; var passwd = req.body.password; var sess = req.session; var login_chk = pool.getConnection(function(err,connection){ connection.query('SELECT U_passwd FROM Member WHERE U_id = ?',[id],function(err,row,req){ if(err)console.log(err); var sqlpasswd = row[0].U_passwd; var answer = 0; answer = passwd_chk(passwd,sqlpasswd); if(answer ===1){ save_session(id); res.render('main'); } var save_session = function(req){ req.session.id = req; } 

我会张贴(login),我在会话中保存身份证,但是这个代码总是错在不能设置财产…我怎么能解决它?…谢谢你的答案

发生这种情况会导致您将userId作为save_session(req)parameter passing。 那么你正在做req.session.id = req; 在你的情况下,相同的userId.session.id = userId; 。 该错误通知你userId没有session属性(Obsiously)。 你只需要传递requserId作为参数。 像这样改变你的代码。

 router.post('/', function(req, res, next) { var id = req.body.userid; var passwd = req.body.password; var sess = req.session; var login_chk = pool.getConnection(function(err,connection){ connection.query('SELECT U_passwd FROM Member WHERE U_id = ?',[id],function(err,row,req){ if(err)console.log(err); var sqlpasswd = row[0].U_passwd; var answer = 0; answer = passwd_chk(passwd,sqlpasswd); if(answer ===1){ save_session(req,id); <--- Change this res.render('main'); } var save_session = function(req,id){ <--- Change this req.session.id = id; <--- Change this } 

我希望它有帮助。