MongoDB
 sql >> Datenbank >  >> NoSQL >> MongoDB

Mongoose find(), wie greife ich auf die Ergebnisdokumente zu?

Ich habe den Fehler gefunden. Es war eher konzeptionell:Ich habe es mit asynchronen Aufrufen zu tun und versuche, das Ergebnis einer anderen Funktion zurückzugeben, und weiß nicht, wann sie ausgeführt wird. Was also passiert, ist, dass ich anfordere, dass die DB-Abfrage ausgeführt wird, und das Ergebnis zurückgebe, das sich als null herausstellt. Dieser Code:

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

gibt null zurück, aber! die console.log(docs) gibt alle Werte aus der Datenbank an die Konsole aus, was ich versucht habe. Jetzt muss ich Änderungen vornehmen, höchstwahrscheinlich einen Rückruf übergeben, der nach Erhalt der Ergebnisse ausgeführt wird.

Mit den Änderungen sieht der Code so aus:

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

So kann ich das Response-Objekt übergeben, damit ich den Namen meiner Ninjas senden kann :)