I'm trying to use continuation-local-storage module to have "currentUser" 
across my entire application.

When calling async waterfall the context gets lost.
    
    app.get('/testing/cls',
    function(req, res, next) {
    ns.run(function() {
    ns.set('currentUser', req.user._id)
        return next()
    })
    },
    function(req, res) {
    function fn1(cb) {
    console.log('async fn1', ns.get('currentUser'))
    return cb()
    }
    
    function fn2(cb) {
    console.log('async fn2', ns.get('currentUser'))
    cb()
    }
    
    function fn3(cb) {
    console.log('async fn3', ns.get('currentUser'))
    cb()
    }
    
    async.waterfall([
    fn1,
    fn2,
    fn3
    ], function() {
    console.log('async waterfall done', ns.get('currentUser'))
    res.send({user: ns.get('currentUser')})
    })
    }
    )

The console prints are

    27/6/2017-11:49:39 - info: (13405) - async fn1 58a1adaslkdjh32e
    27/6/2017-11:49:39 - info: (13405) - async fn2
    27/6/2017-11:49:39 - info: (13405) - async fn3
    27/6/2017-11:49:39 - info: (13405) - async waterfall done

Fixing this problem is by wrapping ns.bind(fn2) but this means that need to 
change entire application code for wherever I have async.

What am I doing wrong?

Any help is appreciated :)

-- 
Job board: http://jobs.nodejs.org/
New group rules: 
https://gist.github.com/othiym23/9886289#file-moderation-policy-md
Old group rules: 
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
--- 
You received this message because you are subscribed to the Google Groups 
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/nodejs/c8f26502-e82c-4cc1-a0ab-a3f4c0aea259%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to