Det händer på grund av den icke-blockerande, asynkrona karaktären hos node js. Detta innebär att all aktivitet som tar lång tid att slutföra, såsom filåtkomst, nätverkskommunikation och databasoperationer, begärs och läggs åt sidan tills resultaten är klara och returneras via en återuppringningsfunktion.
Det är därför du blir odefinierad, för medan db-operationen pågår exekveras den yttre konsolen på grund av icke-blockerande natur.
För att få resultatet kan du göra detta
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)
});
})