메신저로 로그인하여 작은 응용 프로그램을 개발하고 세션 데이터에 액세스하는 데 문제가 있습니다.node.js 몽구스 세션 문제. 정의되면 정의되지 않습니까?
주의 : 고속 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]
이되지만 "name"또는 "email"에 입력하면 공백이 반환됩니다.
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에서 세션 개체를 기록하면 다음 볼 수 있습니다 그것의 정의되지 않은 말 ..하지만 당신은 그것이 정의 볼 수 있기 때문에 왜 몰라.
편집 :
해결; 사용자가 있기 전에 계속 응용 프로그램을 사용하는 것은 비동기 문제였습니다. 는 찾기에 콜백을 보내 응용 프로그램의 흐름과 비동기 문제가 있습니다 다음()
if req.session.authenticated
require('./lib/getUser')(req.session.uid, (results) ->
res.locals.user = results
console.log res.locals
done()
)
else
done()
해결되었습니다. 비동기 문제였습니다 – Menztrual