Reputation: 295
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
Expected Output
Before Reset => 1
After Reset => null
Before Reset => 1
After Reset => null
Before Reset => 1
After Reset => null
Upvotes: 2
Views: 2519
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