MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

mongoose findOne função retorna indefinida


Isso está acontecendo devido à natureza assíncrona e não bloqueante do nó js. Isso significa que qualquer atividade que demore muito para ser concluída, como acesso a arquivos, comunicação de rede e operações de banco de dados, é solicitada e colocada de lado até que os resultados estejam prontos e retornados através de uma função de retorno de chamada.

É por isso que você fica indefinido, porque enquanto a operação db está acontecendo, o console externo é executado devido à natureza não bloqueante.

Para obter o resultado, você pode fazer isso
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)
    });
})