sql >> Base de Datos >  >> NoSQL >> MongoDB

Mongoose find(), ¿cómo acceder a los documentos de resultados?

He encontrado la falla. Era más conceptual:estoy tratando con llamadas asincrónicas y estoy tratando de devolver el resultado de otra función y no sé cuándo se ejecutará. Entonces, lo que sucede es que hago la solicitud de que se ejecute la consulta db y devuelvo el resultado, que resulta ser 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;
}

devuelve nulo, pero! el archivo console.log (docs) imprime en la consola todos los valores de la base de datos, lo que estaba tratando de hacer. Ahora necesito hacer cambios, lo más probable es que pase una devolución de llamada que se ejecutará al recibir los resultados.

Con los cambios, el código se ve así:

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));
}

Así puedo pasar el objeto de respuesta para poder enviar el nombre de mis ninjas :)