簡體   English   中英

為什么我無法在異步瀑布函數中更新Node客戶端會話?

[英]Why am I unable to update Node client-session inside async waterfall function?

我正在使用帶有異步( https://github.com/caolan/async )的客戶端會話( https://github.com/mozilla/node-client-sessions ),但無法從內部更新用戶會話異步瀑布功能。 我想知道我是否做了明顯錯誤的事情:

app.get('/', function (req, res) {  

    console.log(req.session) // first request logs: {}, second request logs: {foo: 'bar'}

    req.session.foo = 'bar'

    async.waterfall([
        function(callback){
            req.session.baz = 'bip'
        }
    ], function(){
        console.log(req.session)  // this logs full object: { foo: 'bar', baz: 'bip' }
    })

    res.send('')
})

似乎第二個請求應該在會話對象中有baz: 'bip' ,但事實並非如此。 為什么?

臉掌! res.send('')需要在瀑布完成函數內部,否則響應會在更新cookie之前發送:

app.get('/', function (req, res) {  

    console.log(req.session)
    req.session.foo = 'bar'

    async.waterfall([
        function(callback){
            req.session.baz = 'bip'
        }
    ], function(){
        console.log(req.session)
        res.send('') // this needed to be moved here
    })


})

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM