Това се случва поради неблокиращия, асинхронен характер на възел js. Това означава, че всяка дейност, която отнема много време за завършване, като достъп до файлове, мрежова комуникация и операции с бази данни, се изисква и оставя настрана, докато резултатите не бъдат готови и върнати чрез функция за обратно извикване.
Ето защо ставате недефинирани, защото докато операцията db се случва, външната конзола се изпълнява поради неблокиращ характер.
За да получите резултата, можете да направите това
app.get('/home',(req, res)=>{
establishment.findOne({_id : "57d83a867d3ba20fcb657dc7" } , (err, estab)=>{
if(err){
return res.send(err);
}
console.log("inside the function: "+estab.name);
// what ever proccing you need to do with result do here and finally return res
res.json(estab)
});
})