MongoDB
 sql >> Base de données >  >> NoSQL >> MongoDB

Mongoose find(), comment accéder aux documents de résultat ?

J'ai trouvé le défaut. C'était plus conceptuel:je traite des appels asynchrones et j'essaie de renvoyer le résultat d'une autre fonction et je ne sais pas quand elle s'exécutera. Donc, ce qui se passe, c'est que je demande que la requête db soit exécutée et renvoie le résultat, qui s'avère être nul. Ce 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;
}

renvoie null, mais ! la console.log(docs) imprime sur la console toutes les valeurs de la base de données, ce que j'essayais de faire. Maintenant, je dois apporter des modifications, très probablement passer un rappel qui sera exécuté à la réception des résultats.

Avec les modifications, le code ressemble à ceci :

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

Donc comme ça je peux passer l'objet de réponse pour pouvoir envoyer le nom de mes ninjas :)