node.js - Error: Can't set headers after they are sent in sailsJs Middleware -


i facing issue trying set cookie value inside middleware after request calls using bluebird promises, getting error " error: can't set headers after sent ",

my code

    user.autologin(req, cookietoken).then(function(apiresponse)     {                 console.log("autologin response");                 console.log(apiresponse.autologin);                 return apiresponse.autologin;             }).then(function(apiresponse) {                 if (apiresponse.success === true) {                     var returnuser = {};                     returnuser = apiresponse.metadata.user;                     returnuser.isuser = 1;                     returnuser.cartitemscount = apiresponse.metadata.no_of_items_cart || 0;                     returnuser.checkoutstep = 2;                     var upsesreq = {                         "al": "1",                         "userid": returnuser.id_customer                     };                     var sessupdate = user.updatesession(req, upsesreq);                      sessupdate.then(function(sesres) {                          console.log(sesres);                         if (sesres.success === true) {                             req.login(returnuser, function (err) {                                 if (err) {                                     console.log(err);                                     forcelogout = true;                                     logerror(err);                                 } else {                                     forcelogout = false;                                     /*                                     userevents.on('loginsuccess', function(req, res){                                         useractivitylistener.setautologincookie(req, res);                                     });                                     */                                     console.log("auto login succcessful");                                     sails.log.verbose("autologin success full user");                                     req.session.totaljabongcredit = returnuser.total_store_credits || 0; var expirationtime = new date(date.now() + (180 * 24 * 60 * 60 * 1000));         res.cookie('xxxx', req.session.token, { expires: expirationtime, httponly: true });                                     autologin = true;                                     //useractivitylistener.setautologincookie(req, res);                                     //userevents.loginsuccess(req, res);                                 }                             });                             console.log("after login session");                             console.log(req.session);                             console.log("after login session");                         } else {                             if (!isempty(sesres.err)) {                                 logerror(sesres.err);                                 forcelogout = true;                             } else {                                 logerror(sesres.message);                                 forcelogout = true;                             }                         }                     }).catch(function(err) {                         logerror(err);                         forcelogout = true;                     });                 }             }).error(function(err) {                 logerror(err);                 forcelogout = true;             }).catch(function(err) {                 logerror(err)                 forcelogout = true;             }); 

i getting error when trying set cookie. in autologin call calling apis , based in result promise object going forward. did not used res.end() in methods autologin. please let me know causing issue?

looks happens in:

var sessupdate = user.updatesession(req, upsesreq); 

it runs in parallel

sessupdate.then(function(sesres) { ..... } 

Comments