Het gebeurt vanwege de niet-blokkerende, asynchrone aard van node js. Dit betekent dat alle activiteiten die lang duren, zoals bestandstoegang, netwerkcommunicatie en databasebewerkingen, worden aangevraagd en opzij worden gezet totdat de resultaten klaar zijn en worden geretourneerd via een terugbelfunctie.
Dat is waarom je ongedefinieerd raakt, want terwijl de db-bewerking plaatsvindt, wordt de buitenste console uitgevoerd vanwege de niet-blokkerende aard.
Om het resultaat te krijgen, kunt u dit doen
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)
});
})