私はログインして小さなアプリケーションを開発し、セッションデータにアクセスする際に問題が発生しました。node.js mongooseセッションの問題。定義されているときは未定義ですか?
NB:急行3.0、コーヒー・スクリプトを使用して
をマングースだから私のアプリでは、私が持っている以下:私のlogin.coffeeで
app.locals.use (req,res) ->
res.locals.session = req.session
res.locals.title = config.title
res.locals.href = config.href
私は次のようにします。
ModelUser.findOne {email: email, password: password}, (err, results) ->
if err then console.log err
if results?
req.session.user = results
req.session.authenticated = true
res.redirect '/'
else
req.session.error = 'bad login'
res.redirect '/'
翡翠で#{session.user}
を出力すると、[bject,Object]
が表示されますが、「名前」または「メール」に入力すると空白になります。
if req.session? then console.log req.session.user
リターン:
{ _id: '4f9b60ba7a7ab7e7f711920e',
email: '[email protected]',
name: 'Demo User',
password: '078d2bf82ee269cd9577588d212655c3a2162dc5b09e7c29c6a343926ee881a9' }
しかしconsole.log req.session.user.email
をすれば、それは私に500エラーを与える私がコンソールに入るとapp.coffeeでセッションオブジェクトをログに記録する場合は、以下を参照してくださいすることができますその定義されていないと言っている..しかし、私はあなたがそれが定義されて見ることができるので、なぜ知りません。
EDIT:
解決しました。ユーザーが手をつける前にアプリケーションの非同期問題が続いていました。 を見つけるのは、コールバックを送信し、アプリケーションフローと非同期問題があり、次の()
if req.session.authenticated
require('./lib/getUser')(req.session.uid, (results) ->
res.locals.user = results
console.log res.locals
done()
)
else
done()
解決済みです。非同期の問題でした – Menztrual