Yogendra
Yogendra

Reputation: 295

Express Session doesn't unset variable

I am using Node Express to develop the web application. In the new project I faced one simple issue but could not figure out the solution so looking for the help.

I used express-session to store the session data and stored some data in the session. After some function I set the session variable to null but still it calls the old session data while calling.

Below is my sample code to initialize session.

app.js

app.use(session({
  secret: 'Hhueerutyier',
  resave: false,
  saveUninitialized: false,
  cookie: { secure: false }
}));

My Router

router.get('/',async function(req,res){
    if(req.session.count && req.session.count != null){
        req.session.count++;
    }else{
        req.session.count = 1;
    }
    let resData = res;
    //JSON.stringify.resData
    console.log("Before Reset =>",req.session.count);
    res.json({
        "data":"I am in check",
        "message" : req.session.msg,
        "count" : req.session.count,
      
    })

   
      req.session.msg = null;
      req.session.count = null; //setting the session varible to null
      console.log("After Reset",req.session.count);
    
})

gives output as

enter image description here

Expected Output
Before Reset => 1
After Reset => null
Before Reset => 1
After Reset => null
Before Reset => 1
After Reset => null

Upvotes: 2

Views: 2519

Answers (1)

KiraLT
KiraLT

Reputation: 2607

You must edit the session before sending the response!

const response = {
    "data":"I am in check",
    "message" : req.session.msg,
    "count" : req.session.count,
    
}

/// remove before sending response
req.session.msg = null;
req.session.count = null; 

// Send response
res.json(response)

You can also use delete statement to delete session item:

delete req.session.msg;
delete req.session.count;

Finally, personally, I like using return statement when sending a response. It doesn't do anything technically, but it notices me that I shouldn't do anything after it.

return res.json(response)

Upvotes: 5

Related Questions