sql >> Databasteknik >  >> NoSQL >> MongoDB

Mongoose find(), hur får man tillgång till resultatdokumenten?

Jag har hittat felet. Det var mer av en konceptuell sådan:jag har att göra med asynkrona anrop och försöker returnera resultatet från en annan funktion och vet inte när den kommer att köras. Så vad som händer är att jag begär att db-frågan ska köras och returnerar resultatet, vilket visar sig vara null. Denna kod:

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

returnerar null, men! console.log(docs) skriver ut till konsolen alla värden från databasen, vad jag försökte göra. Nu måste jag göra ändringar, troligtvis skicka en återuppringning som kommer att exekveras vid mottagandet av resultaten.

Med ändringarna ser koden ut så här:

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

Så så här kan jag skicka svarsobjektet så att jag kan skicka namnet på mina ninjor :)




  1. Använder Redis för att cachelagra SQL-resultat

  2. skillnad mellan aggregat ($match) och fynd, i MongoDB?

  3. Hitta dubbletter av webbadresser i mongodb

  4. MongoDB $project:Behåll tidigare pipelinefält