2016-08-06 11 views
2
router.get('/:username', function(req, res, next) { 
    res.render('dashboard'); 
}); 

router.get('/', function(req, res, next) { 
    if(req.user) // this has value 
     res.redirect('/'+req.user); 
}); 

ユーザがログインしている場合、彼はexample.com/his_nameにリダイレクトされますが、example.com/undefinedになります。 console.log(req.user)を実行すると、値があります。どうして?express.jsの混乱を利用した動的URL

答えて

0

は、このような変数にreq.userを保存してみてください。

router.get('/', function(req, res, next) { 
    var currentUser = req.user; 
    if(currentUser) // this has value 
    res.redirect('/'+currentUser); 
}); 
+0

私はこれが役立つだろうかわかりません。 'if'条件を次の行にチェックするのに要するナノ秒未満で' rec.user'の変更が疑わしいです。 – vlaz

+0

どういう意味ですか?それは変わるべきではない、それがポイントです。 – torus

+0

あなたのソリューションは、3行目と4行目の間で変更される 'rec.user'からのみ保護し、条件をチェックし、' if'の本体を実行します。これは何も変わらないような極小の時間枠であり、さらに変更された場合、 'if(person.age> 18){/ * proceed * /}'のような大きな問題を抱えていますある時点で失敗する。あなたは 'rec.user'が一度だけ真実になり、その後' undefined' _immediately_に設定されると思いますか? – vlaz

関連する問題