これは、ノード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)
});
})