Ini terjadi karena sifat non-blocking, asynchronous dari node js. Ini berarti setiap aktivitas yang membutuhkan waktu lama untuk diselesaikan, seperti akses file, komunikasi jaringan, dan operasi database, diminta dan disisihkan hingga hasilnya siap dan dikembalikan melalui fungsi panggilan balik.
Itulah mengapa Anda menjadi tidak terdefinisi, karena saat operasi db sedang berlangsung, konsol luar dijalankan karena sifatnya yang tidak memblokir.
Untuk mendapatkan hasilnya, Anda dapat melakukan ini
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)
});
})