我搜索并发现了很多将会话变量设置为未定义的类似问题,但我找到的答案似乎都不适用。
我的路由器文件中有这个功能:
exports.loginHandler = function(req, res){
username = req.body.username;
password = req.body.password;
readAccount(username, function(acct){
if (acct.password = password){
req.session.username = username;
console.log(username+' logged in'+' pass: '+acct.password);
};
});
res.redirect('/');
};
console.log 执行得很好,并且 username 和 acct.password 都有适当的值。但是, req.session.username 最终被设置为未定义。
这是 readAccount 函数:
readAccount = function(user, callback){
AM.login(user, function(acct){
callback(acct);
});
};
这是 AM.login:
exports.login = function(user, callback){
accounts.findOne({username: user}, function(err, result){
if (err) throw err;
callback(result);
})
}
我猜会话变量不能在条件下设置,因为这种类型的错误似乎并不罕见。