I am getting "Can't set header after they are sent " error on my nodejs page when I call $http.post from a page after loading, The issue is familiar but somebody could explain how to get rid of this without changing the current flow(coz it is necessary for my project)
Step 1:
app.get('/link/:params?', requireRole(["admin"]) , function (req, res){
//Render ejs template file here
var callback = function(meetingData) {
res.render('chats/room', {
title: 'Website Title Connect' ,
meetingData : meetingData,
success: req.flash('formSuccess'),
session : req.session,
currentTime : new Date().getTime()
});
}
.
.
.
callback(meetingData);
});
Step1 render the layout file (ejs)
<% include ../layout/dashboard_header %>
<div class="dashboard-container" ng-controller="ChatController">
<div id="dynamicContent" ng-init="initChatRoom(<%= meetingData.current._id %>)">
</div>
</div>
<% include ../layout/dashboard_footer %>
Step2: I have called ng-init from the loaded template using angular $http.post which results in Can't set header error . Code is given below
Angular code
$scope.initChatRoom = function(RoomId){
$http.post('/api/meeting/roomdetails', {"RoomId":RoomId}).then(function (response) {
console.log(response);
});
}
Nodejs server code
app.post('/api/meeting/roomdetails', requireRole(["admin","facilitator"]) , function (req, res){
var roomData = req.body;
var response = {};
response.success = 0;
console.log(roomData);
res.json(response);
});