sql >> Database >  >> NoSQL >> MongoDB

Mongoose find(), hoe toegang te krijgen tot de resultaatdocumenten?

Ik heb de fout gevonden. Het was meer een conceptuele:ik heb te maken met asynchrone oproepen en probeer het resultaat van een andere functie te retourneren en weet niet wanneer het zal worden uitgevoerd. Dus wat er gebeurt, is dat ik het verzoek doe om de db-query uit te voeren en het resultaat retourneert, dat null blijkt te zijn. Deze 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;
}

geeft nul terug, maar! de console.log(docs) drukt alle waarden uit de database naar de console, wat ik probeerde te doen. Nu moet ik wijzigingen aanbrengen, hoogstwaarschijnlijk een callback doorgeven die zal worden uitgevoerd na ontvangst van de resultaten.

Met de wijzigingen ziet de code er als volgt uit:

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

Dus op deze manier kan ik het antwoordobject doorgeven, zodat ik de naam van mijn ninja's kan sturen :)




  1. Aggregatie in lokale tijdzone in mongodb

  2. MongoDb:Voordeel van het gebruik van ObjectID versus een string met een ID?

  3. Hoe om te gaan met het tijdzoneprobleem bij het opslaan van datums in utc met behulp van mongod?

  4. MongoDB geaggregeerde query met behulp van PHP-stuurprogramma