Jeg har fundet fejlen. Det var mere et konceptuelt:Jeg beskæftiger mig med asynkrone opkald og forsøger at returnere resultatet fra en anden funktion og ved ikke, hvornår den vil udføres. Så det, der sker, er, at jeg anmoder om, at db-forespørgslen udføres og returnerer resultatet, som viser sig at være null. Denne kode:
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;
}
returnerer null, men! console.log(docs) udskriver til konsollen alle værdierne fra databasen, hvad jeg prøvede at gøre. Nu skal jeg foretage ændringer, højst sandsynligt sende et tilbagekald, som vil blive udført ved modtagelse af resultaterne.
Med ændringerne ser koden således ud:
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ådan er jeg i stand til at sende svarobjektet, så jeg kan sende navnet på mine ninjaer :)