javascript - Cannot call method 'render' of undefined -
i have create "employees" array , want generate mail using array data. create functionality in node.js following.
i have created 1 cron job called following functionality. when function called, following error raised:
cannot call method 'render' of undefined
exports.missedworksheets = function(req, res){ var user = new user(); var dailycurrentdate = []; var dailycurrentdate1 = []; var missedworkbyuser = []; var employees = []; var currentdate = moment(date.now()).format('yyyy-mm-dd'); console.log(currentdate); var lastdate = moment(date.now()).subtract(7,'days'); var addeddate = moment(lastdate).format('yyyy-mm-dd'); console.log(addeddate); for(var i=0; i<5; i++) { dailycurrentdate[i] = moment(addeddate).format('yyyy-mm-dd'); dailycurrentdate[i] = moment(dailycurrentdate[i]).add(1,'days'); dailycurrentdate1[i] = moment(dailycurrentdate[i]).format('yyyy-mm-dd'); addeddate = moment(dailycurrentdate1[i]).format('yyyy-mm-dd'); console.log(dailycurrentdate1[i]); } user.find().exec(function(err, missedusers) { if (err) { return res.status(400).send({ message: errorhandler.geterrormessage(err) }); } else { worksheet.find().populate('employee','._id').exec(function(err, missedworksheets){ if (err) { return res.status(400).send({ message: errorhandler.geterrormessage(err) }); }else{ for(var i=0; i<missedusers.length; i++){ for(var j=0; j<missedworksheets.length; j++){ if(string(missedusers[i]._id) != string(missedworksheets[j].employee._id)) { employees[i] = missedusers[i]; } } } async.waterfall([ function(done) { console.log("async called."); done(err,employees); }, function(employees,done) { console.log("template fetch called."); app.render('templates/weekly-worksheet-checking', { //user: user, employee: employees, }, function(err,emailhtml) { done(err,emailhtml,employees); }); }, // if valid email, send reset email using service function(emailhtml,employees, done) { console.log("1-mail called."); var mailtoemployee = config.mailer.from; var smtptransport = nodemailer.createtransport(config.mailer.options); //users.getactiveadminusers(function(activeadminusers){ var receivers=mailtoemployee+','; // (var in activeadminusers){ // var activeadminuser = activeadminusers[i]; // receivers = receivers + activeadminuser.email+','; // } var mailoptions = { to: 'hareshr@systemintegration.in', from: config.mailer.from, subject: 'unfill worksheetlist of previous year', html: emailhtml }; smtptransport.sendmail(mailoptions, function(err) { if (!err) { // notification.email = leaveresponse.employee.email; // notification.summary = leaveresponse.leavescheduletype; // notifications.approveleavenotification(req,res,notification.email,notification.summary); res.jsonp(employees); } done(err); }); //}); } ],function(err) { if (err){ console.log(err); return res.send({ message: errorhandler.geterrormessage(err) }); } }); } }); } }); };
the error says all, app
object not defined. since seem call method in callback function, maybe app
object defined in scope of js code.
have @ bind
method.
documentation:
https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/function/bind
more details on how use it:
http://javascriptissexy.com/javascript-apply-call-and-bind-methods-are-essential-for-javascript-professionals/#javascript8217s_bind_method
in other words, bind () allows set specific object bound when function or method invoked.
Comments
Post a Comment