sessionIdが与えられた場合、エクスプレスセッションオブジェクトを取得する必要があります。その後、このセッションオブジェクトを編集して、セッションストアのセッションを自動的に更新できるようにしたいと思います。
Session = require('express').session.Session;
_testSession: (sStore, sId) ->
console.log 'called _testSession with session id: ' + sId
sStore.get sId, (error, session) ->
expressSession = new Session
sessionId: sId
sessionStore: sStore
, session
expressSession.foo = 17
console.log 'set expressSession.foo to: ' + expressSession.foo
setTimeout (()->
sStore.get sId, (error, session) ->
console.log 'foo = ' + session.foo
), 1000
ただし、このテストを実行すると、次の出力が得られます。
called _testSession with session id: YaFLcq3eSvoNuwnLS1T1ntrC.3UJMuQ5So6lYRWLDgIRx4Vk/Ab1qH65zV9IwMqoMcR8
set expressSession.foo to: 17
foo = undefined
誰かがここで何が起こっているのか分かりますか?... :(
====編集====
save()も呼び出してみたので、コードは次のようになります。
console.log 'set expressSession.foo to: ' + expressSession.foo
expressSession.save (error) ->
console.log 'error: ' + error
setTimeout (()->
sStore.get sId, (error, session) ->
console.log 'foo = ' + session.foo
), 1000
そして同じ出力を得ました:(
====編集====
気にしないでください、save()は機能します。sessionIdはsessionID.../facepalmである必要があります。