De callback van de findOne() is asynchroon, het wordt uitgevoerd nadat je de jade hebt weergegeven. De uitvoering springt naar "TrackSession" voordat de gebruikersvariabele een nieuwe waarde krijgt.
Je moet de var html =... in de callback plaatsen.
var user = null;
User.findOne({$and: [{"_id": advisorId}, {"role": "advisor"}]},{firstName:1,lastName:1, '_id':0}, function(err,userData,user) {
user = userData;
TrackSession.find({'advisor_id' : advisorId},fields,function(err, chatHistoryData) {
var jade = require('jade');
var html = jade.renderFile(appRoot+'/views/generatePDFHTML.jade', {'chatHistoryData': chatHistoryData,
'selectedOptions':selectedOptions,
'advisor':user,
'tableHeaders':tableHeaders
});
console.log(html); return false;
});
});