Nó xảy ra do tính chất không chặn, không đồng bộ của nút j. Điều này có nghĩa là bất kỳ hoạt động nào mất nhiều thời gian để hoàn thành, chẳng hạn như truy cập tệp, giao tiếp mạng và hoạt động cơ sở dữ liệu, đều được yêu cầu và gác lại cho đến khi kết quả sẵn sàng và được trả về thông qua chức năng gọi lại.
Đó là lý do tại sao bạn nhận được không xác định, bởi vì trong khi thao tác db đang diễn ra, bảng điều khiển bên ngoài được thực thi do tính chất không chặn.
Để có kết quả, bạn có thể làm điều này
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)
});
})