sql >> Databáze >  >> NoSQL >> MongoDB

Mongoose find(), jak získat přístup k výsledným dokumentům?

Našel jsem chybu. Bylo to spíše koncepční:Zabývám se asynchronními voláními a snažím se vrátit výsledek z jiné funkce a nevím, kdy se provede. Stane se tedy, že požádám o provedení dotazu db a vrátím výsledek, který se ukáže jako null. Tento kód:

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

vrátí hodnotu null, ale! console.log(docs) vytiskne do konzole všechny hodnoty z databáze, o co jsem se snažil. Nyní musím provést změny, pravděpodobně předat zpětné volání, které bude provedeno po obdržení výsledků.

Se změnami vypadá kód takto:

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

Takže takto jsem schopen předat objekt odpovědi, abych mohl poslat jména svých ninjů :)




  1. Ekvivalent MongoServer.State v ovladači 2.0

  2. Nasadit Meteor.js na example.com nebo www.example.com?

  3. MongoDB nemůže najít datový adresář po upgradu na Mac OS 10.15 (Catalina)

  4. pymongo:název 'ISODate' není definován