I am using nodejs express and firebase for my database. So what I am trying to do is upon user's post request, update firebase data and redirect user to another page. But I keep getting Error: Can't set headers after they are sent.
Here is my code in controller.js file:
app.post('/carpark', urlencodedParser, function(req,res){
req.session.carpark = req.body.carpark;
lotsRef.orderByChild('CarparkName').equalTo(req.session.carpark).on('value', function(snapshot){
for (var key in snapshot.val()) {
if (snapshot.val()[key]['Availability'] == true) {
firebase.database().ref('Lots/'+ key).update({'Availability': false });
res.redirect('checkin');
break;
}
}
});
EDITED:
app.post('/carpark', urlencodedParser, function(req,res){
req.session.carpark = req.body.carpark;
lotsRef.orderByChild('CarparkName').equalTo(req.session.carpark).on('value', function(snapshot){
for (var key in snapshot.val()) {
var allocatedtime = new Date().getHours() + ':' + (new Date().getMinutes() <10 ? '0' : '') + new Date().getMinutes() + ':' + (new Date().getSeconds() <10 ?'0' : '') + new Date().getSeconds();
req.session.key = key;
req.session.LotID = snapshot.val()[key]['LotID'];
req.session.AllocatedTime = allocatedtime;
req.session.SerialNum = snapshot.val()[key]['SerialNumber'];
var date = new Date().getFullYear() + "-" + (new Date().getMonth()+1) + "-" + new Date().getDate();
req.session.DateAllocated = date;
console.log(req.session);
firebase.database().ref('Lots/'+ req.session.key).update({'Availability': false });
break;
}
}
res.redirect('checkin');
});