セッション変数が未定義に設定されているという同様の問題を検索して見つけましたが、見つけた答えはどれも当てはまりませんでした。
ルーターファイルにこの機能があります:
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 は undefined に設定されてしまいます。
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);
})
}
このタイプのエラーは珍しくないように見えるので、セッション変数は特定の条件下では設定できないと思います。