即時通訊開發一個小應用程序與登錄和訪問會話數據有問題。node.js mongoose會話問題。定義時未定義?
注:使用快遞3.0,咖啡腳本和貓鼬
所以,在我的應用我有以下幾點:
app.locals.use (req,res) ->
res.locals.session = req.session
res.locals.title = config.title
res.locals.href = config.href
在我login.coffee我做了以下內容:
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 '/'
如果我在Jade中輸出#{session.user}
,我得到[bject,Object]
,但是如果我輸入「name」或「email」,它將返回空白。如果我進入控制檯並登錄會話對象在app.coffee,你可以看到如下:
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錯誤說它沒有定義..但我不知道爲什麼,因爲你可以看到它被定義。
編輯:
解決;在獲得用戶之前,應用程序仍然處於異步問題。 只好回調發送到查找和使用next()的
if req.session.authenticated
require('./lib/getUser')(req.session.uid, (results) ->
res.locals.user = results
console.log res.locals
done()
)
else
done()
解決了它。是異步問題 – Menztrual 2012-04-28 04:42:44