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

Mongoose find(), como acessar os documentos de resultado?


Encontrei a falha. Foi mais conceitual:estou lidando com chamadas assíncronas e estou tentando retornar o resultado de outra função e não sei quando ela será executada. Então o que acontece é que eu faço a solicitação para que a consulta db seja executada e retorne o resultado, que acaba sendo nulo. Este código:
getNinjas : function(){
    var res = null;
    Ninja.find({},'name skill',function(err,docs){
        if (err)
            console.log('error occured in the database');
        console.log(docs);
    });     
    return res;
}

retorna nulo, mas! o console.log(docs) imprime no console todos os valores do banco de dados, o que eu estava tentando fazer. Agora preciso fazer alterações, muito provavelmente passar um callback que será executado no recebimento dos resultados.

Com as alterações o código ficou assim:
getNinjas : function(res){
    var twisted = function(res){
        return function(err, data){
            if (err){
                console.log('error occured');
                return;
            }
            res.send('My ninjas are:\n');
            console.log(data);
        }
    }

    Ninja.find({},'name skill',twisted(res));
}

Assim consigo passar o objeto de resposta para poder enviar o nome dos meus ninjas :)