Cela se produit en raison de la nature non bloquante et asynchrone du nœud js. Cela signifie que toute activité prenant beaucoup de temps, comme l'accès aux fichiers, la communication réseau et les opérations de base de données, est demandée et mise de côté jusqu'à ce que les résultats soient prêts et renvoyés. via une fonction de rappel.
C'est pourquoi vous n'êtes pas défini, car pendant que l'opération db se déroule, la console externe est exécutée en raison de sa nature non bloquante.
Pour obtenir le résultat, vous pouvez le faire
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)
});
})